es6-fuzz 7.1.0 → 7.1.1

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/Readme.md CHANGED
@@ -15,7 +15,9 @@
15
15
  * **Reverse Grade** - Inverted linear membership
16
16
  * **Sigmoid** - S-shaped membership curve
17
17
  * **Trapezoid** - Trapezoidal membership function
18
- * **Triangle** - Triangular membership functionve
18
+ * **Triangle** - Triangular membership function
19
+ * **FuzzyFunction** - Custom membership from a user-supplied `(x) => 0..1` callback
20
+
19
21
  ## Documentation
20
22
 
21
23
  * [API Documentation](http://sebs.github.io/es6-fuzz)
@@ -1 +1 @@
1
- {"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../../src/curve/constant.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,qCAAqC;AACrC,qBAAa,QAAS,YAAW,SAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;;OAKG;gBACS,aAAa,EAAE,MAAM;IAMjC;;;OAGG;IACH,OAAO,IAAI,MAAM;CAGlB"}
1
+ {"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../../src/curve/constant.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,qCAAqC;AACrC,qBAAa,QAAS,YAAW,SAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;;OAKG;gBACS,aAAa,EAAE,MAAM;IAUjC;;;OAGG;IACH,OAAO,IAAI,MAAM;CAGlB"}
@@ -11,7 +11,11 @@ class Constant {
11
11
  * new Constant(0.5)
12
12
  */
13
13
  constructor(constantValue) {
14
- if (!(constantValue >= 0 && constantValue <= 1)) {
14
+ // Require an actual number: the >=/<= comparisons coerce their operands, so
15
+ // without the typeof check `true`, "0.5", [1] etc. would pass validation and
16
+ // be returned verbatim by fuzzify, breaking the number contract and letting a
17
+ // non-number "membership" win a Logic classification (findings.md F4).
18
+ if (typeof constantValue !== 'number' || !(constantValue >= 0 && constantValue <= 1)) {
15
19
  throw Error('Constant value must be between 0 and 1 but is ' + constantValue);
16
20
  }
17
21
  this.cValue = constantValue;
@@ -1 +1 @@
1
- {"version":3,"file":"constant.js","sourceRoot":"","sources":["../../src/curve/constant.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,qCAAqC;AACrC,MAAa,QAAQ;IACF,MAAM,CAAS;IAEhC;;;;;OAKG;IACH,YAAY,aAAqB;QAC/B,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,KAAK,CAAC,gDAAgD,GAAG,aAAa,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;IAC9B,CAAC;IACD;;;OAGG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAtBD,4BAsBC"}
1
+ {"version":3,"file":"constant.js","sourceRoot":"","sources":["../../src/curve/constant.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,qCAAqC;AACrC,MAAa,QAAQ;IACF,MAAM,CAAS;IAEhC;;;;;OAKG;IACH,YAAY,aAAqB;QAC/B,4EAA4E;QAC5E,6EAA6E;QAC7E,8EAA8E;QAC9E,uEAAuE;QACvE,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,CAAC,EAAE,CAAC;YACrF,MAAM,KAAK,CAAC,gDAAgD,GAAG,aAAa,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;IAC9B,CAAC;IACD;;;OAGG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AA1BD,4BA0BC"}
@@ -1 +1 @@
1
- {"version":3,"file":"grade.d.ts","sourceRoot":"","sources":["../../src/curve/grade.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC;;;;GAIG;AACH,qBAAa,KAAM,SAAQ,KAAK;IAC9B;;;;OAIG;gBACS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAUlC;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CA2B7B"}
1
+ {"version":3,"file":"grade.d.ts","sourceRoot":"","sources":["../../src/curve/grade.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC;;;;GAIG;AACH,qBAAa,KAAM,SAAQ,KAAK;IAC9B;;;;OAIG;gBACS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAuBlC;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CA2B7B"}
@@ -15,11 +15,24 @@ class Grade extends shape_1.Shape {
15
15
  */
16
16
  constructor(x0, x1) {
17
17
  super(x0, x1, x1, x1);
18
- // Reject reversed finite params: with x0 > x1 the `x <= x0` guard swallows
19
- // the whole interior, so the ramp collapses into a hard step and the linear
20
- // branch becomes dead code. NaN/Infinity are left untouched (handled at
21
- // fuzzify time and relied on by callers passing open-ended bounds).
22
- if (Number.isFinite(x0) && Number.isFinite(x1) && x0 > x1) {
18
+ // Coordinates must be finite. A non-finite bound (Infinity/NaN) drives the
19
+ // interior ramp into Inf/Inf or NaN arithmetic and returns NaN, violating the
20
+ // documented 0..1 contract. (An earlier comment claimed non-finite bounds were
21
+ // "relied on for open-ended shapes"; they never produced a valid membership —
22
+ // see findings.md F1.)
23
+ if (!Number.isFinite(x0) || !Number.isFinite(x1)) {
24
+ throw Error('Grade requires finite coordinates but got x0=' + x0 + ', x1=' + x1);
25
+ }
26
+ // The coordinates are finite but their span can still overflow to Infinity
27
+ // (e.g. x0=-1e308, x1=1e308). The ramp then divides by Infinity and collapses
28
+ // to 0/NaN across the whole interior, so reject a non-finite span (findings.md F2).
29
+ if (!Number.isFinite(x1 - x0)) {
30
+ throw Error('Grade span x1 - x0 overflows to a non-finite value: x0=' + x0 + ', x1=' + x1);
31
+ }
32
+ // Reject reversed params: with x0 > x1 the `x <= x0` guard swallows the whole
33
+ // interior, so the ramp collapses into a hard step and the linear branch
34
+ // becomes dead code.
35
+ if (x0 > x1) {
23
36
  throw Error('Grade requires x0 <= x1 but got x0=' + x0 + ', x1=' + x1);
24
37
  }
25
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grade.js","sourceRoot":"","sources":["../../src/curve/grade.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AACb,mCAAgC;AAChC;;;;GAIG;AACH,MAAa,KAAM,SAAQ,aAAK;IAC9B;;;;OAIG;IACH,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACtB,2EAA2E;QAC3E,4EAA4E;QAC5E,wEAAwE;QACxE,oEAAoE;QACpE,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YAC1D,MAAM,KAAK,CAAC,qCAAqC,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD;;;;OAIG;IACH,OAAO,CAAC,GAAW;QACjB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,GAAG,CAAC;QAEd,sEAAsE;QACtE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAE9B,4DAA4D;QAC5D,0EAA0E;QAC1E,kEAAkE;QAClE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,CAAC,CAAC,SAAS;QACrB,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,CAAC;YACN,wEAAwE;YACxE,sEAAsE;YACtE,uEAAuE;YACvE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAhDD,sBAgDC"}
1
+ {"version":3,"file":"grade.js","sourceRoot":"","sources":["../../src/curve/grade.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AACb,mCAAgC;AAChC;;;;GAIG;AACH,MAAa,KAAM,SAAQ,aAAK;IAC9B;;;;OAIG;IACH,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACtB,2EAA2E;QAC3E,8EAA8E;QAC9E,+EAA+E;QAC/E,8EAA8E;QAC9E,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,MAAM,KAAK,CAAC,+CAA+C,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,2EAA2E;QAC3E,8EAA8E;QAC9E,oFAAoF;QACpF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC,yDAAyD,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,8EAA8E;QAC9E,yEAAyE;QACzE,qBAAqB;QACrB,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YACZ,MAAM,KAAK,CAAC,qCAAqC,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD;;;;OAIG;IACH,OAAO,CAAC,GAAW;QACjB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,GAAG,CAAC;QAEd,sEAAsE;QACtE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAE9B,4DAA4D;QAC5D,0EAA0E;QAC1E,kEAAkE;QAClE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,CAAC,CAAC,SAAS;QACrB,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,CAAC;YACN,wEAAwE;YACxE,sEAAsE;YACtE,uEAAuE;YACvE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA7DD,sBA6DC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reverse-grade.d.ts","sourceRoot":"","sources":["../../src/curve/reverse-grade.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC;;;;OAIG;gBACS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IASlC;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAqB7B"}
1
+ {"version":3,"file":"reverse-grade.d.ts","sourceRoot":"","sources":["../../src/curve/reverse-grade.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC;;;;OAIG;gBACS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAoBlC;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAqB7B"}
@@ -15,10 +15,21 @@ class ReverseGrade extends shape_1.Shape {
15
15
  */
16
16
  constructor(x0, x1) {
17
17
  super(x0, x1, x1, x1);
18
- // Reject reversed finite params: with x0 > x1 the falling edge collapses
19
- // into a hard step and the linear branch becomes dead code. NaN/Infinity
20
- // are left untouched (handled at fuzzify time).
21
- if (Number.isFinite(x0) && Number.isFinite(x1) && x0 > x1) {
18
+ // Coordinates must be finite: a non-finite bound (Infinity/NaN) drives the
19
+ // falling edge into Inf/Inf or NaN arithmetic and returns NaN, violating the
20
+ // documented 0..1 contract (see findings.md F1).
21
+ if (!Number.isFinite(x0) || !Number.isFinite(x1)) {
22
+ throw Error('ReverseGrade requires finite coordinates but got x0=' + x0 + ', x1=' + x1);
23
+ }
24
+ // Finite coordinates can still have a span that overflows to Infinity, which
25
+ // makes the falling edge collapse to 0/NaN across the interior; reject it
26
+ // (findings.md F2).
27
+ if (!Number.isFinite(x1 - x0)) {
28
+ throw Error('ReverseGrade span x1 - x0 overflows to a non-finite value: x0=' + x0 + ', x1=' + x1);
29
+ }
30
+ // Reject reversed params: with x0 > x1 the falling edge collapses into a hard
31
+ // step and the linear branch becomes dead code.
32
+ if (x0 > x1) {
22
33
  throw Error('ReverseGrade requires x0 <= x1 but got x0=' + x0 + ', x1=' + x1);
23
34
  }
24
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reverse-grade.js","sourceRoot":"","sources":["../../src/curve/reverse-grade.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AACb,mCAAgC;AAChC;;;;GAIG;AACH,MAAa,YAAa,SAAQ,aAAK;IACrC;;;;OAIG;IACH,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACtB,yEAAyE;QACzE,yEAAyE;QACzE,gDAAgD;QAChD,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YAC1D,MAAM,KAAK,CAAC,4CAA4C,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD;;;;OAIG;IACH,OAAO,CAAC,GAAW;QACjB,MAAM,CAAC,GAAG,GAAG,CAAC;QAEd,sEAAsE;QACtE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAE9B,oEAAoE;QACpE,wEAAwE;QACxE,qEAAqE;QACrE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,CAAC,CAAC,SAAS;QACrB,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC;QAC3B,yEAAyE;QACzE,iEAAiE;QACjE,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF;AAzCD,oCAyCC"}
1
+ {"version":3,"file":"reverse-grade.js","sourceRoot":"","sources":["../../src/curve/reverse-grade.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AACb,mCAAgC;AAChC;;;;GAIG;AACH,MAAa,YAAa,SAAQ,aAAK;IACrC;;;;OAIG;IACH,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACtB,2EAA2E;QAC3E,6EAA6E;QAC7E,iDAAiD;QACjD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,MAAM,KAAK,CAAC,sDAAsD,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,6EAA6E;QAC7E,0EAA0E;QAC1E,oBAAoB;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC,gEAAgE,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;QACpG,CAAC;QACD,8EAA8E;QAC9E,gDAAgD;QAChD,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YACZ,MAAM,KAAK,CAAC,4CAA4C,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD;;;;OAIG;IACH,OAAO,CAAC,GAAW;QACjB,MAAM,CAAC,GAAG,GAAG,CAAC;QAEd,sEAAsE;QACtE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAE9B,oEAAoE;QACpE,wEAAwE;QACxE,qEAAqE;QACrE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,CAAC,CAAC,SAAS;QACrB,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC;QAC3B,yEAAyE;QACzE,iEAAiE;QACjE,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF;AApDD,oCAoDC"}
@@ -1 +1 @@
1
- {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../src/curve/shape.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,uCAAuC;AACvC,8BAAsB,KAAM,YAAW,SAAS;IAC9C,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAC;IAErB;;;;;;OAMG;gBACS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAuB1D;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CACtC"}
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../src/curve/shape.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,uCAAuC;AACvC,8BAAsB,KAAM,YAAW,SAAS;IAC9C,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAC;IAErB;;;;;;OAMG;gBACS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IA8B1D;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CACtC"}
@@ -28,6 +28,13 @@ class Shape {
28
28
  ['x3', x3],
29
29
  ];
30
30
  for (const [name, value] of coords) {
31
+ // Enforce the `readonly xN: number` field contract at runtime: a missing
32
+ // constructor argument (e.g. a 3-argument Trapezoid) would otherwise store
33
+ // `undefined` here and later produce NaN in fuzzify. Subclasses that accept
34
+ // fewer coordinates must resolve them to concrete numbers before super().
35
+ if (typeof value !== 'number') {
36
+ throw Error('Shape coordinate ' + name + ' must be a number but is ' + value);
37
+ }
31
38
  Object.defineProperty(this, name, {
32
39
  value,
33
40
  writable: false,
@@ -1 +1 @@
1
- {"version":3,"file":"shape.js","sourceRoot":"","sources":["../../src/curve/shape.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,uCAAuC;AACvC,MAAsB,KAAK;IAChB,EAAE,CAAU;IACZ,EAAE,CAAU;IACZ,EAAE,CAAU;IACZ,EAAE,CAAU;IAErB;;;;;;OAMG;IACH,YAAY,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU;QACxD,kEAAkE;QAClE,wEAAwE;QACxE,4EAA4E;QAC5E,wEAAwE;QACxE,uEAAuE;QACvE,yDAAyD;QACzD,MAAM,MAAM,GAA4B;YACtC,CAAC,IAAI,EAAE,EAAE,CAAC;YACV,CAAC,IAAI,EAAE,EAAE,CAAC;YACV,CAAC,IAAI,EAAE,EAAE,CAAC;YACV,CAAC,IAAI,EAAE,EAAE,CAAC;SACX,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YACnC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;gBAChC,KAAK;gBACL,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,IAAI;gBAChB,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CAQF;AA1CD,sBA0CC"}
1
+ {"version":3,"file":"shape.js","sourceRoot":"","sources":["../../src/curve/shape.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,uCAAuC;AACvC,MAAsB,KAAK;IAChB,EAAE,CAAU;IACZ,EAAE,CAAU;IACZ,EAAE,CAAU;IACZ,EAAE,CAAU;IAErB;;;;;;OAMG;IACH,YAAY,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU;QACxD,kEAAkE;QAClE,wEAAwE;QACxE,4EAA4E;QAC5E,wEAAwE;QACxE,uEAAuE;QACvE,yDAAyD;QACzD,MAAM,MAAM,GAA4B;YACtC,CAAC,IAAI,EAAE,EAAE,CAAC;YACV,CAAC,IAAI,EAAE,EAAE,CAAC;YACV,CAAC,IAAI,EAAE,EAAE,CAAC;YACV,CAAC,IAAI,EAAE,EAAE,CAAC;SACX,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YACnC,yEAAyE;YACzE,2EAA2E;YAC3E,4EAA4E;YAC5E,0EAA0E;YAC1E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,KAAK,CAAC,mBAAmB,GAAG,IAAI,GAAG,2BAA2B,GAAG,KAAK,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;gBAChC,KAAK;gBACL,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,IAAI;gBAChB,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CAQF;AAjDD,sBAiDC"}
@@ -3,8 +3,8 @@ import { Fuzzifier } from './fuzzifier';
3
3
  * Class representing a Sigmoid.
4
4
  * @example
5
5
  * // long slope
6
- * sigmoid = new Sigmoid(0, 100000);
7
- * sigmoid2.fuzzify(10);
6
+ * const sigmoid = new Sigmoid(0, 100000);
7
+ * sigmoid.fuzzify(10); // ~0.500025
8
8
  */
9
9
  export declare class Sigmoid implements Fuzzifier {
10
10
  private readonly center;
@@ -5,8 +5,8 @@ exports.Sigmoid = void 0;
5
5
  * Class representing a Sigmoid.
6
6
  * @example
7
7
  * // long slope
8
- * sigmoid = new Sigmoid(0, 100000);
9
- * sigmoid2.fuzzify(10);
8
+ * const sigmoid = new Sigmoid(0, 100000);
9
+ * sigmoid.fuzzify(10); // ~0.500025
10
10
  */
11
11
  class Sigmoid {
12
12
  center;
@@ -12,7 +12,7 @@ export declare class Trapezoid extends Shape {
12
12
  * @param {number} x2 - end of the plateau (membership 1)
13
13
  * @param {number} x3 - right foot (membership 0)
14
14
  */
15
- constructor(x0: number, x1: number, x2: number, x3: number);
15
+ constructor(x0: number, x1: number, x2: number, x3?: number);
16
16
  /**
17
17
  * Fuzzify
18
18
  * @param {number} val - Point on X axis
@@ -1 +1 @@
1
- {"version":3,"file":"trapezoid.d.ts","sourceRoot":"","sources":["../../src/curve/trapezoid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC;;;;;;OAMG;gBACS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAmB1D;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAwC7B"}
1
+ {"version":3,"file":"trapezoid.d.ts","sourceRoot":"","sources":["../../src/curve/trapezoid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC;;;;;;OAMG;gBACS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM;IAuC3D;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CA4C7B"}
@@ -16,18 +16,34 @@ class Trapezoid extends shape_1.Shape {
16
16
  * @param {number} x3 - right foot (membership 0)
17
17
  */
18
18
  constructor(x0, x1, x2, x3) {
19
- super(x0, x1, x2, x3);
20
- // Reject out-of-order finite params. In particular an inverted plateau
21
- // (x1 > x2) makes the plateau branch unsatisfiable, so the curve never
22
- // reaches membership 1 and develops a discontinuity. NaN/Infinity, and the
23
- // 3-argument form (x3 === undefined), are left untouched.
24
- if (Number.isFinite(x0) &&
25
- Number.isFinite(x1) &&
26
- Number.isFinite(x2) &&
27
- Number.isFinite(x3) &&
28
- !(x0 <= x1 && x1 <= x2 && x2 <= x3)) {
19
+ // 3-argument form: collapse the right foot onto the plateau end (x3 = x2),
20
+ // the same way Triangle/Grade fill their trailing coordinates. This keeps the
21
+ // `readonly x3: number` contract honest (x3 is always a concrete number) so
22
+ // the falling edge can never divide by `undefined` and return NaN.
23
+ const x3r = x3 === undefined ? x2 : x3;
24
+ super(x0, x1, x2, x3r);
25
+ // Coordinates must be finite: a non-finite bound (e.g. x3=Infinity) makes the
26
+ // adjacent edge compute Inf/Inf = NaN for finite inputs, violating the
27
+ // documented 0..1 contract (see findings.md F1).
28
+ if (!Number.isFinite(x0) ||
29
+ !Number.isFinite(x1) ||
30
+ !Number.isFinite(x2) ||
31
+ !Number.isFinite(x3r)) {
32
+ throw Error('Trapezoid requires finite coordinates but got x0=' +
33
+ x0 + ', x1=' + x1 + ', x2=' + x2 + ', x3=' + x3r);
34
+ }
35
+ // Finite coordinates can still have edge spans that overflow to Infinity,
36
+ // making that edge collapse to 0/NaN; reject a non-finite span (findings.md F2).
37
+ if (!Number.isFinite(x1 - x0) || !Number.isFinite(x3r - x2)) {
38
+ throw Error('Trapezoid edge span overflows to a non-finite value: x0=' +
39
+ x0 + ', x1=' + x1 + ', x2=' + x2 + ', x3=' + x3r);
40
+ }
41
+ // Reject out-of-order params. In particular an inverted plateau (x1 > x2)
42
+ // makes the plateau branch unsatisfiable, so the curve never reaches
43
+ // membership 1 and develops a discontinuity.
44
+ if (!(x0 <= x1 && x1 <= x2 && x2 <= x3r)) {
29
45
  throw Error('Trapezoid requires x0 <= x1 <= x2 <= x3 but got x0=' +
30
- x0 + ', x1=' + x1 + ', x2=' + x2 + ', x3=' + x3);
46
+ x0 + ', x1=' + x1 + ', x2=' + x2 + ', x3=' + x3r);
31
47
  }
32
48
  }
33
49
  /**
@@ -71,11 +87,15 @@ class Trapezoid extends shape_1.Shape {
71
87
  }
72
88
  else if (x > this.x0 && x < this.x1) {
73
89
  // Rising edge — only reached when x0 < x1, so the divisor is never 0.
74
- result = x / (this.x1 - this.x0) - this.x0 / (this.x1 - this.x0);
90
+ // Stable form (x - x0)/(x1 - x0), matching Grade/Triangle. The split form
91
+ // x/(x1-x0) - x0/(x1-x0) subtracts two large nearly-equal quotients and
92
+ // loses significance for large coordinates (findings.md F3).
93
+ result = (x - this.x0) / (this.x1 - this.x0);
75
94
  }
76
95
  else {
77
96
  // Falling edge — only reached when x2 < x3, so the divisor is never 0.
78
- result = -x / (this.x3 - this.x2) + this.x3 / (this.x3 - this.x2);
97
+ // Stable form (x3 - x)/(x3 - x2), matching Grade/Triangle.
98
+ result = (this.x3 - x) / (this.x3 - this.x2);
79
99
  }
80
100
  return result;
81
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"trapezoid.js","sourceRoot":"","sources":["../../src/curve/trapezoid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trapezoid.js","sourceRoot":"","sources":["../../src/curve/trapezoid.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"triangle.d.ts","sourceRoot":"","sources":["../../src/curve/triangle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC;;;;;OAKG;gBACS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAiB9C;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAwC3B"}
1
+ {"version":3,"file":"triangle.d.ts","sourceRoot":"","sources":["../../src/curve/triangle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC;;;;;OAKG;gBACS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IA2B9C;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAwC3B"}
@@ -16,14 +16,22 @@ class Triangle extends shape_1.Shape {
16
16
  */
17
17
  constructor(x0, x1, x2) {
18
18
  super(x0, x1, x2, x2);
19
- // Reject out-of-order finite params. With x0 > x1 or x1 > x2 the branch
20
- // guards make whole edges unreachable, so the peak (x1) never reaches 1 and
21
- // the curve is discontinuous or collapses to the empty set. NaN/Infinity are
22
- // left untouched (handled at fuzzify time, relied on for open-ended shapes).
23
- if (Number.isFinite(x0) &&
24
- Number.isFinite(x1) &&
25
- Number.isFinite(x2) &&
26
- !(x0 <= x1 && x1 <= x2)) {
19
+ // Coordinates must be finite: an infinite base (e.g. x2=Infinity) makes the
20
+ // adjacent edge compute Inf/Inf = NaN for finite inputs, violating the
21
+ // documented 0..1 contract. (An earlier comment claimed non-finite bounds were
22
+ // "relied on for open-ended shapes"; they never worked — see findings.md F1.)
23
+ if (!Number.isFinite(x0) || !Number.isFinite(x1) || !Number.isFinite(x2)) {
24
+ throw Error('Triangle requires finite coordinates but got x0=' + x0 + ', x1=' + x1 + ', x2=' + x2);
25
+ }
26
+ // Finite coordinates can still have edge spans that overflow to Infinity,
27
+ // making that edge collapse to 0/NaN; reject a non-finite span (findings.md F2).
28
+ if (!Number.isFinite(x1 - x0) || !Number.isFinite(x2 - x1)) {
29
+ throw Error('Triangle edge span overflows to a non-finite value: x0=' + x0 + ', x1=' + x1 + ', x2=' + x2);
30
+ }
31
+ // Reject out-of-order params. With x0 > x1 or x1 > x2 the branch guards make
32
+ // whole edges unreachable, so the peak (x1) never reaches 1 and the curve is
33
+ // discontinuous or collapses to the empty set.
34
+ if (!(x0 <= x1 && x1 <= x2)) {
27
35
  throw Error('Triangle requires x0 <= x1 <= x2 but got x0=' + x0 + ', x1=' + x1 + ', x2=' + x2);
28
36
  }
29
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"triangle.js","sourceRoot":"","sources":["../../src/curve/triangle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"triangle.js","sourceRoot":"","sources":["../../src/curve/triangle.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AACb,mCAAgC;AAChC;;;;GAIG;AACH,MAAa,QAAS,SAAQ,aAAK;IACjC;;;;;OAKG;IACH,YAAY,EAAU,EAAE,EAAU,EAAE,EAAU;QAC5C,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACtB,4EAA4E;QAC5E,uEAAuE;QACvE,+EAA+E;QAC/E,8EAA8E;QAC9E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACzE,MAAM,KAAK,CACT,kDAAkD,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,CACtF,CAAC;QACJ,CAAC;QACD,0EAA0E;QAC1E,iFAAiF;QACjF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;YAC3D,MAAM,KAAK,CACT,yDAAyD,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,CAC7F,CAAC;QACJ,CAAC;QACD,6EAA6E;QAC7E,6EAA6E;QAC7E,+CAA+C;QAC/C,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,CACT,8CAA8C,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,CAClF,CAAC;QACJ,CAAC;IACH,CAAC;IACD;;;;OAIG;IACH,OAAO,CAAC,CAAS;QACf,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,yDAAyD;QACzD,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,6CAA6C;QAC7C,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC/B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;QAC5B,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA/ED,4BA+EC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AA8B1C,qCAAqC;AACrC,qBAAa,KAAK;IAChB,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,KAAK,CAAc;IAE3B;;;;OAIG;IACI,CAAC,EAAE;QACR,KAAK,EAAE,OAAO,KAAK,CAAC;QACpB,KAAK,EAAE,OAAO,KAAK,CAAC;QACpB,YAAY,EAAE,OAAO,YAAY,CAAC;QAClC,SAAS,EAAE,OAAO,SAAS,CAAC;QAC5B,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAC1B,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAC1B,aAAa,EAAE,OAAO,aAAa,CAAC;QACpC,OAAO,EAAE,OAAO,OAAO,CAAC;KACzB,CAAC;;IAeF,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAevB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAQ5C;;;;;;;;OAQG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAQ3C;;;;;;;OAOG;IACH,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAQ1C;;;;;;OAMG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAQ3C;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,eAAe;CAkE7D;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAErD,UAAiB,IAAI;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,SAAS,CAAC;QACjB,IAAI,EAAE,QAAQ,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAED,UAAiB,eAAe;QAC9B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,IAAI,EAAE,CAAC;QACd,OAAO,IAAI,MAAM,CAAC;QAClB,QAAQ,IAAI,MAAM,CAAC;KACpB;CACF"}
1
+ {"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AA8B1C,qCAAqC;AACrC,qBAAa,KAAK;IAChB,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,KAAK,CAAc;IAE3B;;;;OAIG;IACI,CAAC,EAAE;QACR,KAAK,EAAE,OAAO,KAAK,CAAC;QACpB,KAAK,EAAE,OAAO,KAAK,CAAC;QACpB,YAAY,EAAE,OAAO,YAAY,CAAC;QAClC,SAAS,EAAE,OAAO,SAAS,CAAC;QAC5B,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAC1B,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAC1B,aAAa,EAAE,OAAO,aAAa,CAAC;QACpC,OAAO,EAAE,OAAO,OAAO,CAAC;KACzB,CAAC;;IAeF,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAsBvB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAQ5C;;;;;;;;OAQG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAQ3C;;;;;;;OAOG;IACH,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAQ1C;;;;;;OAMG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAQ3C;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,eAAe;CA2E7D;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAErD,UAAiB,IAAI;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,SAAS,CAAC;QACjB,IAAI,EAAE,QAAQ,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAED,UAAiB,eAAe;QAC9B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,IAAI,EAAE,CAAC;QACd,OAAO,IAAI,MAAM,CAAC;QAClB,QAAQ,IAAI,MAAM,CAAC;KACpB;CACF"}
package/lib/logic.js CHANGED
@@ -67,6 +67,13 @@ class Logic {
67
67
  if (!reg.test(name)) {
68
68
  throw Error('Output names can only be strings without space, without numbers and without special chars (ASCII letters a-z only)');
69
69
  }
70
+ // 'none' is the sentinel defuzzify() returns when no rule fires. A real output
71
+ // with that name collides with the sentinel, so a non-firing rule named 'none'
72
+ // is falsely reported as the winner in boonJsInputs (findings.md F6). Reserve
73
+ // it, case-insensitively, so the no-winner signal stays unambiguous.
74
+ if (name.toLowerCase() === 'none') {
75
+ throw Error('Output name "none" is reserved (it is the no-winner sentinel)');
76
+ }
70
77
  if (this.rules.some((rule) => rule.output === name)) {
71
78
  throw Error('Output name "' + name + '" is already in use');
72
79
  }
@@ -168,6 +175,14 @@ class Logic {
168
175
  // `not` computing 1 - raw on it — could make the winner's fuzzified value
169
176
  // fall outside 0..1.
170
177
  const clamp = (v) => Number.isNaN(v) ? 0 : Math.min(1, Math.max(0, v));
178
+ // Return an isolated, frozen copy of a shape so the caller cannot reach back
179
+ // into the engine's internal fuzzifier and mutate it (which would silently
180
+ // change later evaluations — findings.md F7). Keeps the prototype so
181
+ // `shape.fuzzify` still works, and copies own coordinates for Shape curves.
182
+ const isolateShape = (shape) => {
183
+ const copy = Object.assign(Object.create(Object.getPrototypeOf(shape)), shape);
184
+ return Object.freeze(copy);
185
+ };
171
186
  // Evaluate into fresh rule copies so the engine's internal state is never
172
187
  // mutated or handed out to the caller.
173
188
  const rules = this.rules.map((rule) => {
@@ -181,7 +196,7 @@ class Logic {
181
196
  defuzzified = rule.output;
182
197
  fuzzified = membership;
183
198
  }
184
- return { ...rule, fuzzy: membership };
199
+ return { ...rule, shape: isolateShape(rule.shape), fuzzy: membership };
185
200
  });
186
201
  let namePrefix = '';
187
202
  if (as) {
package/lib/logic.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"logic.js","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logic.js","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,18 @@ export declare class SVGRenderer {
31
31
  private options;
32
32
  private readonly defaultOptions;
33
33
  constructor(options?: SVGOptions);
34
+ /**
35
+ * Escape a caller-supplied string for use as SVG/XML text content, so a label
36
+ * like `</text><script>…` cannot break out of its element and inject nodes
37
+ * (findings.md F8).
38
+ */
39
+ private escapeText;
40
+ /**
41
+ * Escape a caller-supplied string for use inside a double-quoted SVG/XML
42
+ * attribute, so a color/style value containing `"` cannot terminate the
43
+ * attribute and inject markup (findings.md F9).
44
+ */
45
+ private escapeAttr;
34
46
  private scaleX;
35
47
  private scaleY;
36
48
  private generatePath;
@@ -1 +1 @@
1
- {"version":3,"file":"svg-renderer.d.ts","sourceRoot":"","sources":["../src/svg-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAKtC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,CAAC;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,WAAW;IA2BV,OAAO,CAAC,OAAO;IA1B3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAwB7B;gBAEkB,OAAO,GAAE,UAAe;IAI5C,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,UAAU;IAuDlB,OAAO,CAAC,YAAY;IAgEpB,OAAO,CAAC,cAAc;IAoFtB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM;IA8BjE,cAAc,CACZ,MAAM,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;QAClD,OAAO,CAAC,EAAE,OAAO,CAAC;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACrF,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,GACD,MAAM;CAgDV"}
1
+ {"version":3,"file":"svg-renderer.d.ts","sourceRoot":"","sources":["../src/svg-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAKtC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,CAAC;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,WAAW;IA2BV,OAAO,CAAC,OAAO;IA1B3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAwB7B;gBAEkB,OAAO,GAAE,UAAe;IAe5C;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAOlB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,UAAU;IAuDlB,OAAO,CAAC,YAAY;IAyEpB,OAAO,CAAC,cAAc;IAoFtB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM;IA8BjE,cAAc,CACZ,MAAM,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;QAClD,OAAO,CAAC,EAAE,OAAO,CAAC;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACrF,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,GACD,MAAM;CAgDV"}
@@ -38,6 +38,40 @@ class SVGRenderer {
38
38
  constructor(options = {}) {
39
39
  this.options = options;
40
40
  this.options = { ...this.defaultOptions, ...options };
41
+ const { xMin, xMax, yMin, yMax } = this.options;
42
+ // A zero-width/height domain makes scaleX/scaleY divide by zero (NaN/Infinity
43
+ // path coordinates) and makes the grid loop step by zero — an infinite loop
44
+ // that grows the SVG string until Node throws RangeError. Reject it up front
45
+ // (findings.md F10). `!(a > b)` also catches NaN and reversed bounds.
46
+ if (!(xMax > xMin)) {
47
+ throw Error('SVGRenderer requires xMax > xMin but got xMin=' + xMin + ', xMax=' + xMax);
48
+ }
49
+ if (!(yMax > yMin)) {
50
+ throw Error('SVGRenderer requires yMax > yMin but got yMin=' + yMin + ', yMax=' + yMax);
51
+ }
52
+ }
53
+ /**
54
+ * Escape a caller-supplied string for use as SVG/XML text content, so a label
55
+ * like `</text><script>…` cannot break out of its element and inject nodes
56
+ * (findings.md F8).
57
+ */
58
+ escapeText(value) {
59
+ return String(value)
60
+ .replace(/&/g, '&amp;')
61
+ .replace(/</g, '&lt;')
62
+ .replace(/>/g, '&gt;');
63
+ }
64
+ /**
65
+ * Escape a caller-supplied string for use inside a double-quoted SVG/XML
66
+ * attribute, so a color/style value containing `"` cannot terminate the
67
+ * attribute and inject markup (findings.md F9).
68
+ */
69
+ escapeAttr(value) {
70
+ return String(value)
71
+ .replace(/&/g, '&amp;')
72
+ .replace(/</g, '&lt;')
73
+ .replace(/>/g, '&gt;')
74
+ .replace(/"/g, '&quot;');
41
75
  }
42
76
  scaleX(x) {
43
77
  const { xMin, xMax, width, padding } = this.options;
@@ -65,27 +99,27 @@ class SVGRenderer {
65
99
  // Vertical grid lines
66
100
  for (let x = xMin; x <= xMax; x += xStep) {
67
101
  const xPos = this.scaleX(x);
68
- svg += `<line x1="${xPos}" y1="${padding}" x2="${xPos}" y2="${height - padding}" stroke="${gridColor}" stroke-width="1" />`;
102
+ svg += `<line x1="${xPos}" y1="${padding}" x2="${xPos}" y2="${height - padding}" stroke="${this.escapeAttr(gridColor)}" stroke-width="1" />`;
69
103
  }
70
104
  // Horizontal grid lines
71
105
  for (let y = yMin; y <= yMax; y += yStep) {
72
106
  const yPos = this.scaleY(y);
73
- svg += `<line x1="${padding}" y1="${yPos}" x2="${width - padding}" y2="${yPos}" stroke="${gridColor}" stroke-width="1" />`;
107
+ svg += `<line x1="${padding}" y1="${yPos}" x2="${width - padding}" y2="${yPos}" stroke="${this.escapeAttr(gridColor)}" stroke-width="1" />`;
74
108
  }
75
109
  // Axes
76
- svg += `<line x1="${padding}" y1="${height - padding}" x2="${width - padding}" y2="${height - padding}" stroke="${axisColor}" stroke-width="2" />`;
77
- svg += `<line x1="${padding}" y1="${padding}" x2="${padding}" y2="${height - padding}" stroke="${axisColor}" stroke-width="2" />`;
110
+ svg += `<line x1="${padding}" y1="${height - padding}" x2="${width - padding}" y2="${height - padding}" stroke="${this.escapeAttr(axisColor)}" stroke-width="2" />`;
111
+ svg += `<line x1="${padding}" y1="${padding}" x2="${padding}" y2="${height - padding}" stroke="${this.escapeAttr(axisColor)}" stroke-width="2" />`;
78
112
  // Labels
79
113
  if (showLabels) {
80
114
  // X-axis labels
81
115
  for (let x = xMin; x <= xMax; x += xStep * 2) {
82
116
  const xPos = this.scaleX(x);
83
- svg += `<text x="${xPos}" y="${height - padding + 20}" text-anchor="middle" font-size="${fontSize}" fill="${labelColor}">${x}</text>`;
117
+ svg += `<text x="${xPos}" y="${height - padding + 20}" text-anchor="middle" font-size="${fontSize}" fill="${this.escapeAttr(labelColor)}">${x}</text>`;
84
118
  }
85
119
  // Y-axis labels
86
120
  for (let y = yMin; y <= yMax; y += yStep) {
87
121
  const yPos = this.scaleY(y);
88
- svg += `<text x="${padding - 10}" y="${yPos + 4}" text-anchor="end" font-size="${fontSize}" fill="${labelColor}">${y.toFixed(1)}</text>`;
122
+ svg += `<text x="${padding - 10}" y="${yPos + 4}" text-anchor="end" font-size="${fontSize}" fill="${this.escapeAttr(labelColor)}">${y.toFixed(1)}</text>`;
89
123
  }
90
124
  }
91
125
  return svg;
@@ -120,17 +154,24 @@ class SVGRenderer {
120
154
  legendX = width - padding - legendWidth - 10;
121
155
  legendY = height - padding - legendHeight - 10;
122
156
  break;
157
+ default:
158
+ // Without this, an unrecognized legendPosition left legendX/legendY
159
+ // undefined and the legend rendered at x="undefined" y="undefined"
160
+ // (findings.md F11).
161
+ throw Error('Unknown legendPosition "' +
162
+ legendPosition +
163
+ '" (expected top-left, top-right, bottom-left or bottom-right)');
123
164
  }
124
165
  let svg = '';
125
166
  // Legend background
126
- svg += `<rect x="${legendX}" y="${legendY}" width="${legendWidth}" height="${legendHeight}" fill="${legendBackgroundColor}" stroke="${legendBorderColor}" stroke-width="1" rx="4" />`;
167
+ svg += `<rect x="${legendX}" y="${legendY}" width="${legendWidth}" height="${legendHeight}" fill="${this.escapeAttr(legendBackgroundColor)}" stroke="${this.escapeAttr(legendBorderColor)}" stroke-width="1" rx="4" />`;
127
168
  // Legend items
128
169
  items.forEach((item, index) => {
129
170
  const itemY = legendY + legendPadding + index * legendItemHeight;
130
171
  // Color box
131
- svg += `<rect x="${legendX + legendPadding}" y="${itemY}" width="${fontSize}" height="${fontSize}" fill="${item.color}" />`;
132
- // Label
133
- svg += `<text x="${legendX + legendPadding + fontSize + 5}" y="${itemY + fontSize - 2}" font-size="${fontSize}" fill="${legendTextColor}">${item.label}</text>`;
172
+ svg += `<rect x="${legendX + legendPadding}" y="${itemY}" width="${fontSize}" height="${fontSize}" fill="${this.escapeAttr(item.color)}" />`;
173
+ // Label (escaped: caller-supplied text must not break out of <text>)
174
+ svg += `<text x="${legendX + legendPadding + fontSize + 5}" y="${itemY + fontSize - 2}" font-size="${fontSize}" fill="${this.escapeAttr(legendTextColor)}">${this.escapeText(item.label)}</text>`;
134
175
  });
135
176
  return svg;
136
177
  }
@@ -221,7 +262,7 @@ class SVGRenderer {
221
262
  render(shape) {
222
263
  const { width, height, backgroundColor, strokeColor, strokeWidth, fillOpacity, gridLines } = this.options;
223
264
  let svg = `<svg width="${width}" height="${height}" xmlns="http://www.w3.org/2000/svg">`;
224
- svg += `<rect width="${width}" height="${height}" fill="${backgroundColor}" />`;
265
+ svg += `<rect width="${width}" height="${height}" fill="${this.escapeAttr(backgroundColor)}" />`;
225
266
  if (gridLines) {
226
267
  svg += this.renderGrid();
227
268
  }
@@ -231,10 +272,10 @@ class SVGRenderer {
231
272
  if (fillOpacity > 0 && points.length > 0) {
232
273
  const fillPath = path +
233
274
  ` L ${this.scaleX(points[points.length - 1][0])} ${this.scaleY(0)} L ${this.scaleX(points[0][0])} ${this.scaleY(0)} Z`;
234
- svg += `<path d="${fillPath}" fill="${strokeColor}" fill-opacity="${fillOpacity}" />`;
275
+ svg += `<path d="${fillPath}" fill="${this.escapeAttr(strokeColor)}" fill-opacity="${fillOpacity}" />`;
235
276
  }
236
277
  // Add stroke
237
- svg += `<path d="${path}" fill="none" stroke="${strokeColor}" stroke-width="${strokeWidth}" />`;
278
+ svg += `<path d="${path}" fill="none" stroke="${this.escapeAttr(strokeColor)}" stroke-width="${strokeWidth}" />`;
238
279
  svg += '</svg>';
239
280
  return svg;
240
281
  }
@@ -242,7 +283,7 @@ class SVGRenderer {
242
283
  const { width, height, backgroundColor, gridLines, showLegend } = this
243
284
  .options;
244
285
  let svg = `<svg width="${width}" height="${height}" xmlns="http://www.w3.org/2000/svg">`;
245
- svg += `<rect width="${width}" height="${height}" fill="${backgroundColor}" />`;
286
+ svg += `<rect width="${width}" height="${height}" fill="${this.escapeAttr(backgroundColor)}" />`;
246
287
  if (gridLines) {
247
288
  svg += this.renderGrid();
248
289
  }
@@ -261,10 +302,10 @@ class SVGRenderer {
261
302
  if (fillOpacity > 0 && points.length > 0) {
262
303
  const fillPath = path +
263
304
  ` L ${this.scaleX(points[points.length - 1][0])} ${this.scaleY(0)} L ${this.scaleX(points[0][0])} ${this.scaleY(0)} Z`;
264
- svg += `<path d="${fillPath}" fill="${strokeColor}" fill-opacity="${fillOpacity}" />`;
305
+ svg += `<path d="${fillPath}" fill="${this.escapeAttr(strokeColor)}" fill-opacity="${fillOpacity}" />`;
265
306
  }
266
307
  // Add stroke
267
- svg += `<path d="${path}" fill="none" stroke="${strokeColor}" stroke-width="${strokeWidth}" />`;
308
+ svg += `<path d="${path}" fill="none" stroke="${this.escapeAttr(strokeColor)}" stroke-width="${strokeWidth}" />`;
268
309
  });
269
310
  // Add legend if enabled
270
311
  if (showLegend && legendItems.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"svg-renderer.js","sourceRoot":"","sources":["../src/svg-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"svg-renderer.js","sourceRoot":"","sources":["../src/svg-renderer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "es6-fuzz",
3
3
  "description": "fuzzy logic with and for typescript and javascript",
4
- "version": "7.1.0",
4
+ "version": "7.1.1",
5
5
  "type": "commonjs",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",