es6-fuzz 5.0.0 → 6.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.
Files changed (62) hide show
  1. package/.claude/settings.local.json +26 -0
  2. package/Readme.md +3 -6
  3. package/SECURITY.md +151 -0
  4. package/lib/curve/constant.d.ts +17 -0
  5. package/lib/curve/constant.d.ts.map +1 -0
  6. package/lib/curve/constant.js +21 -17
  7. package/lib/curve/constant.js.map +1 -0
  8. package/lib/curve/fuzzy-function.d.ts +15 -0
  9. package/lib/curve/fuzzy-function.d.ts.map +1 -0
  10. package/lib/curve/fuzzy-function.js +24 -19
  11. package/lib/curve/fuzzy-function.js.map +1 -0
  12. package/lib/curve/grade.d.ts +15 -0
  13. package/lib/curve/grade.d.ts.map +1 -0
  14. package/lib/curve/grade.js +30 -26
  15. package/lib/curve/grade.js.map +1 -0
  16. package/lib/curve/reverse-grade.d.ts +11 -0
  17. package/lib/curve/reverse-grade.d.ts.map +1 -0
  18. package/lib/curve/reverse-grade.js +30 -25
  19. package/lib/curve/reverse-grade.js.map +1 -0
  20. package/lib/curve/shape.d.ts +22 -0
  21. package/lib/curve/shape.d.ts.map +1 -0
  22. package/lib/curve/shape.js +32 -25
  23. package/lib/curve/shape.js.map +1 -0
  24. package/lib/curve/sigmoid.d.ts +24 -0
  25. package/lib/curve/sigmoid.d.ts.map +1 -0
  26. package/lib/curve/sigmoid.js +30 -23
  27. package/lib/curve/sigmoid.js.map +1 -0
  28. package/lib/curve/trapezoid.d.ts +15 -0
  29. package/lib/curve/trapezoid.d.ts.map +1 -0
  30. package/lib/curve/trapezoid.js +56 -47
  31. package/lib/curve/trapezoid.js.map +1 -0
  32. package/lib/curve/triangle.d.ts +15 -0
  33. package/lib/curve/triangle.d.ts.map +1 -0
  34. package/lib/curve/triangle.js +55 -47
  35. package/lib/curve/triangle.js.map +1 -0
  36. package/lib/logic.d.ts +49 -0
  37. package/lib/logic.d.ts.map +1 -0
  38. package/lib/logic.js +126 -130
  39. package/lib/logic.js.map +1 -0
  40. package/package.json +12 -6
  41. package/typedoc.json +20 -0
  42. package/docs/CHANGELOG.md +0 -162
  43. package/docs/glossary.md +0 -13
  44. package/docs/manual.md +0 -0
  45. package/jsdoc.json +0 -28
  46. package/scripts/publish-gh.js +0 -6
  47. package/test/bug-74-test.js +0 -100
  48. package/test/curve/constant.js +0 -15
  49. package/test/curve/fuzzy-function.js +0 -17
  50. package/test/curve/grade.js +0 -20
  51. package/test/curve/reverse-grade.js +0 -20
  52. package/test/curve/shape.js +0 -17
  53. package/test/curve/sigmoid.js +0 -93
  54. package/test/curve/trapezoid.js +0 -71
  55. package/test/curve/triangle.js +0 -21
  56. package/test/edge-cases.js +0 -244
  57. package/test/error-handling.js +0 -229
  58. package/test/example-test.js +0 -26
  59. package/test/init-called.test.js +0 -17
  60. package/test/integration.js +0 -343
  61. package/test/js-bool.test.js +0 -87
  62. package/test/logic-test.js +0 -67
@@ -1,4 +1,6 @@
1
1
  'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Sigmoid = void 0;
2
4
  /**
3
5
  * Class representing a Sigmoid.
4
6
  * @example
@@ -7,28 +9,33 @@
7
9
  * sigmoid2.fuzzify(10);
8
10
  */
9
11
  class Sigmoid {
10
- /**
11
- * Create a Sigmoid Function.
12
- * @param {number} center - The center point of the sigmoid curve (where it outputs 0.5)
13
- * @param {number} slope - The slope of the sigmoid curve (higher = steeper transition)
14
- */
15
- constructor(center=0, slope=1) {
16
- this.center = center;
17
- this.slope = slope;
18
- }
19
- /**
20
- * Fuzzify
21
- * @param {number} x - Point on X axis
22
- * @return {number} fuzzy output 0..1
23
- */
24
- fuzzify(x) {
25
- if (this.slope === 0) {
26
- // When slope is 0, sigmoid becomes a step function
27
- if (x < this.center) return 0;
28
- if (x > this.center) return 1;
29
- return 0.5; // At center point
12
+ center;
13
+ slope;
14
+ /**
15
+ * Create a Sigmoid Function.
16
+ * @param {number} center - The center point of the sigmoid curve (where it outputs 0.5)
17
+ * @param {number} slope - The slope of the sigmoid curve (higher = steeper transition)
18
+ */
19
+ constructor(center = 0, slope = 1) {
20
+ this.center = center;
21
+ this.slope = slope;
22
+ }
23
+ /**
24
+ * Fuzzify
25
+ * @param {number} x - Point on X axis
26
+ * @return {number} fuzzy output 0..1
27
+ */
28
+ fuzzify(x) {
29
+ if (this.slope === 0) {
30
+ // When slope is 0, sigmoid becomes a step function
31
+ if (x < this.center)
32
+ return 0;
33
+ if (x > this.center)
34
+ return 1;
35
+ return 0.5; // At center point
36
+ }
37
+ return 1.0 / (1.0 + Math.exp(-(x - this.center) / this.slope));
30
38
  }
31
- return 1.0 / (1.0 + Math.exp(-(x - this.center) / this.slope));
32
- }
33
39
  }
34
- module.exports = Sigmoid;
40
+ exports.Sigmoid = Sigmoid;
41
+ //# sourceMappingURL=sigmoid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sigmoid.js","sourceRoot":"","sources":["../../src/curve/sigmoid.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AACb;;;;;;GAMG;AACH,MAAa,OAAO;IACD,MAAM,CAAS;IACf,KAAK,CAAS;IAE/B;;;;OAIG;IACH,YAAY,SAAiB,CAAC,EAAE,QAAgB,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IACD;;;;OAIG;IACH,OAAO,CAAC,CAAS;QACf,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACrB,mDAAmD;YACnD,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC;YAC9B,OAAO,GAAG,CAAC,CAAC,kBAAkB;QAChC,CAAC;QACD,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,CAAC;CACF;AA3BD,0BA2BC"}
@@ -0,0 +1,15 @@
1
+ import { Shape } from './shape';
2
+ /**
3
+ * Class representing a Trapezoid.
4
+ * @example
5
+ * new Trapezoid(0, 10, 15, 20)
6
+ */
7
+ export declare class Trapezoid extends Shape {
8
+ /**
9
+ * Fuzzify
10
+ * @param {number} val - Point on X axis
11
+ * @return {number} fuzzy output 0..1
12
+ */
13
+ fuzzify(val: number): number;
14
+ }
15
+ //# sourceMappingURL=trapezoid.d.ts.map
@@ -0,0 +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;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAwC7B"}
@@ -1,55 +1,64 @@
1
1
  'use strict';
2
- const Shape = require('./shape');
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Trapezoid = void 0;
4
+ const shape_1 = require("./shape");
3
5
  /**
4
6
  * Class representing a Trapezoid.
5
7
  * @example
6
8
  * new Trapezoid(0, 10, 15, 20)
7
9
  */
8
- class Trapezoid extends Shape {
9
- /**
10
- * Fuzzify
11
- * @param {number} - Point on X axis
12
- * @return {number} fuzzy output 0..1
13
- */
14
- fuzzify(val) {
15
- let result = 0;
16
- const x = val;
17
-
18
- // Special case: all points equal (spike at single point)
19
- if (this.x0 === this.x1 && this.x1 === this.x2 && this.x2 === this.x3) {
20
- return x === this.x0 ? 1 : 0;
10
+ class Trapezoid extends shape_1.Shape {
11
+ /**
12
+ * Fuzzify
13
+ * @param {number} val - Point on X axis
14
+ * @return {number} fuzzy output 0..1
15
+ */
16
+ fuzzify(val) {
17
+ let result = 0;
18
+ const x = val;
19
+ // Special case: all points equal (spike at single point)
20
+ if (this.x0 === this.x1 && this.x1 === this.x2 && this.x2 === this.x3) {
21
+ return x === this.x0 ? 1 : 0;
22
+ }
23
+ // Special case: x0=x1 and x2=x3 (rectangle)
24
+ if (this.x0 === this.x1 && this.x2 === this.x3) {
25
+ if (x < this.x0)
26
+ return 0;
27
+ if (x >= this.x0 && x <= this.x2)
28
+ return 1;
29
+ if (x > this.x2)
30
+ return 0;
31
+ return 0;
32
+ }
33
+ if (x <= this.x0) {
34
+ result = 0;
35
+ }
36
+ else if (x >= this.x3) {
37
+ result = 0;
38
+ }
39
+ else if ((x >= this.x1) && (x <= this.x2)) {
40
+ result = 1;
41
+ }
42
+ else if ((x > this.x0) && (x < this.x1)) {
43
+ // Handle case where x0 = x1 (vertical left edge)
44
+ if (this.x1 === this.x0) {
45
+ result = 1;
46
+ }
47
+ else {
48
+ result = (x / (this.x1 - this.x0)) - (this.x0 / (this.x1 - this.x0));
49
+ }
50
+ }
51
+ else {
52
+ // Handle case where x2 = x3 (vertical right edge)
53
+ if (this.x3 === this.x2) {
54
+ result = 1;
55
+ }
56
+ else {
57
+ result = (-x / (this.x3 - this.x2)) + (this.x3 / (this.x3 - this.x2));
58
+ }
59
+ }
60
+ return result;
21
61
  }
22
-
23
- // Special case: x0=x1 and x2=x3 (rectangle)
24
- if (this.x0 === this.x1 && this.x2 === this.x3) {
25
- if (x < this.x0) return 0;
26
- if (x >= this.x0 && x <= this.x2) return 1;
27
- if (x > this.x2) return 0;
28
- return 0;
29
- }
30
-
31
- if (x <= this.x0) {
32
- result = 0;
33
- } else if (x >= this.x3) {
34
- result = 0;
35
- } else if ((x >= this.x1) && (x <= this.x2)) {
36
- result = 1;
37
- } else if ((x > this.x0) && (x < this.x1)) {
38
- // Handle case where x0 = x1 (vertical left edge)
39
- if (this.x1 === this.x0) {
40
- result = 1;
41
- } else {
42
- result = (x / (this.x1 - this.x0)) - (this.x0 / (this.x1 - this.x0));
43
- }
44
- } else {
45
- // Handle case where x2 = x3 (vertical right edge)
46
- if (this.x3 === this.x2) {
47
- result = 1;
48
- } else {
49
- result = (-x / (this.x3 - this.x2)) + (this.x3 / (this.x3 - this.x2));
50
- }
51
- }
52
- return result;
53
- }
54
62
  }
55
- module.exports = Trapezoid;
63
+ exports.Trapezoid = Trapezoid;
64
+ //# sourceMappingURL=trapezoid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trapezoid.js","sourceRoot":"","sources":["../../src/curve/trapezoid.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AACb,mCAAgC;AAChC;;;;GAIG;AACH,MAAa,SAAU,SAAQ,aAAK;IAClC;;;;OAIG;IACH,OAAO,CAAC,GAAW;QACjB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,GAAG,CAAC;QAEd,yDAAyD;QACzD,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACtE,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC1B,OAAO,CAAC,CAAC;QACX,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,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5C,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1C,iDAAiD;YACjD,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gBACxB,MAAM,GAAG,CAAC,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kDAAkD;YAClD,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gBACxB,MAAM,GAAG,CAAC,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA9CD,8BA8CC"}
@@ -0,0 +1,15 @@
1
+ import { Shape } from './shape';
2
+ /**
3
+ * Class representing a Triangle.
4
+ * @example
5
+ * new Triangle(0, 10, 20)
6
+ */
7
+ export declare class Triangle extends Shape {
8
+ /**
9
+ * Fuzzify
10
+ * @param {number} x - Point on X axis
11
+ * @return {number} fuzzy output 0..1
12
+ */
13
+ fuzzify(x: number): number;
14
+ }
15
+ //# sourceMappingURL=triangle.d.ts.map
@@ -0,0 +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;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAwC3B"}
@@ -1,55 +1,63 @@
1
1
  'use strict';
2
- const Shape = require('./shape');
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Triangle = void 0;
4
+ const shape_1 = require("./shape");
3
5
  /**
4
6
  * Class representing a Triangle.
5
7
  * @example
6
8
  * new Triangle(0, 10, 20)
7
9
  */
8
- class Triangle extends Shape {
9
- /**
10
- * Fuzzify
11
- * @param {number} - Point on X axis
12
- * @return {number} fuzzy output 0..1
13
- */
14
- fuzzify(x) {
15
- let result = 0;
16
-
17
- // Special case: all points equal (spike at single point)
18
- if (this.x0 === this.x1 && this.x1 === this.x2) {
19
- return x === this.x0 ? 1 : 0;
10
+ class Triangle extends shape_1.Shape {
11
+ /**
12
+ * Fuzzify
13
+ * @param {number} x - Point on X axis
14
+ * @return {number} fuzzy output 0..1
15
+ */
16
+ fuzzify(x) {
17
+ let result = 0;
18
+ // Special case: all points equal (spike at single point)
19
+ if (this.x0 === this.x1 && this.x1 === this.x2) {
20
+ return x === this.x0 ? 1 : 0;
21
+ }
22
+ // Special case: x0 = x1 (vertical left edge)
23
+ if (this.x0 === this.x1) {
24
+ if (x < this.x0)
25
+ return 0;
26
+ if (x === this.x0)
27
+ return 1;
28
+ if (x >= this.x2)
29
+ return 0;
30
+ if (x < this.x2) {
31
+ return (this.x2 - x) / (this.x2 - this.x1);
32
+ }
33
+ }
34
+ // Special case: x1 = x2 (vertical right edge)
35
+ if (this.x1 === this.x2) {
36
+ if (x <= this.x0)
37
+ return 0;
38
+ if (x > this.x0 && x < this.x1) {
39
+ return (x - this.x0) / (this.x1 - this.x0);
40
+ }
41
+ if (x === this.x1)
42
+ return 1;
43
+ if (x > this.x1)
44
+ return 0;
45
+ }
46
+ // Normal triangle
47
+ if (x <= this.x0) {
48
+ result = 0;
49
+ }
50
+ else if (x >= this.x2) {
51
+ result = 0;
52
+ }
53
+ else if ((x > this.x0) && (x <= this.x1)) {
54
+ result = (x - this.x0) / (this.x1 - this.x0);
55
+ }
56
+ else if ((x > this.x1) && (x < this.x2)) {
57
+ result = (this.x2 - x) / (this.x2 - this.x1);
58
+ }
59
+ return result;
20
60
  }
21
-
22
- // Special case: x0 = x1 (vertical left edge)
23
- if (this.x0 === this.x1) {
24
- if (x < this.x0) return 0;
25
- if (x === this.x0) return 1;
26
- if (x >= this.x2) return 0;
27
- if (x < this.x2) {
28
- return (this.x2 - x) / (this.x2 - this.x1);
29
- }
30
- }
31
-
32
- // Special case: x1 = x2 (vertical right edge)
33
- if (this.x1 === this.x2) {
34
- if (x <= this.x0) return 0;
35
- if (x > this.x0 && x < this.x1) {
36
- return (x - this.x0) / (this.x1 - this.x0);
37
- }
38
- if (x === this.x1) return 1;
39
- if (x > this.x1) return 0;
40
- }
41
-
42
- // Normal triangle
43
- if (x <= this.x0) {
44
- result = 0;
45
- } else if (x >= this.x2) {
46
- result = 0;
47
- } else if ((x > this.x0) && (x <= this.x1)) {
48
- result = (x - this.x0) / (this.x1 - this.x0);
49
- } else if ((x > this.x1) && (x < this.x2)) {
50
- result = (this.x2 - x) / (this.x2 - this.x1);
51
- }
52
- return result;
53
- }
54
61
  }
55
- module.exports = Triangle;
62
+ exports.Triangle = Triangle;
63
+ //# sourceMappingURL=triangle.js.map
@@ -0,0 +1 @@
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;;;;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,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3C,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,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1C,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;AA9CD,4BA8CC"}
package/lib/logic.d.ts ADDED
@@ -0,0 +1,49 @@
1
+ import { Shape } from './curve/shape';
2
+ import { Grade } from './curve/grade';
3
+ import { ReverseGrade } from './curve/reverse-grade';
4
+ import { Triangle } from './curve/triangle';
5
+ import { Trapezoid } from './curve/trapezoid';
6
+ import { Constant } from './curve/constant';
7
+ import { FuzzyFunction } from './curve/fuzzy-function';
8
+ import { Sigmoid } from './curve/sigmoid';
9
+ /** Class helping with FuzzyLogic. */
10
+ export declare class Logic {
11
+ private initCalled;
12
+ private rules;
13
+ c: {
14
+ Shape: typeof Shape;
15
+ Grade: typeof Grade;
16
+ ReverseGrade: typeof ReverseGrade;
17
+ Trapezoid: typeof Trapezoid;
18
+ Triangle: typeof Triangle;
19
+ Constant: typeof Constant;
20
+ FuzzyFunction: typeof FuzzyFunction;
21
+ Sigmoid: typeof Sigmoid;
22
+ };
23
+ constructor();
24
+ private checkInitCalled;
25
+ private checkOutputName;
26
+ init(output: string, shape: Shape): this;
27
+ and(output: string, shape: Shape): this;
28
+ or(output: string, shape: Shape): this;
29
+ not(output: string, shape: Shape): this;
30
+ defuzzify(value: number, as?: string): Logic.DefuzzifyResult;
31
+ }
32
+ export declare namespace Logic {
33
+ type RuleType = 'init' | 'and' | 'or' | 'not';
34
+ interface Rule {
35
+ output: string;
36
+ shape: Shape;
37
+ type: RuleType;
38
+ fuzzy?: number;
39
+ }
40
+ interface DefuzzifyResult {
41
+ boonJsInputs: Record<string, boolean>;
42
+ fuzzified: number;
43
+ defuzzified: string;
44
+ rules: Rule[];
45
+ valueOf(): number;
46
+ toString(): string;
47
+ }
48
+ }
49
+ //# sourceMappingURL=logic.d.ts.map
@@ -0,0 +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,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;AAuB1C,qCAAqC;AACrC,qBAAa,KAAK;IAChB,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,KAAK,CAAc;IAEpB,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;IAOvB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAQxC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAQvC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAQtC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAQvC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,eAAe;CAwD7D;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,KAAK,CAAC;QACb,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"}