stigmergy 1.2.0 → 1.2.6

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 (125) hide show
  1. package/LICENSE +18 -18
  2. package/README.md +28 -223
  3. package/STIGMERGY.md +61 -61
  4. package/docs/PROJECT_CONSTITUTION.md +433 -433
  5. package/docs/PROJECT_STRUCTURE_CURRENT.md +80 -80
  6. package/examples/calculator-example.js +72 -72
  7. package/examples/cline_usage_examples.md +364 -364
  8. package/examples/encryption-example.js +67 -67
  9. package/examples/json-parser-example.js +120 -120
  10. package/examples/json-validation-example.js +64 -64
  11. package/examples/rest-client-example.js +52 -52
  12. package/examples/rest_client_example.js +54 -54
  13. package/package.json +36 -15
  14. package/scripts/build.js +74 -74
  15. package/scripts/post-deployment-config.js +296 -296
  16. package/scripts/preinstall-check.js +173 -173
  17. package/scripts/publish.js +58 -268
  18. package/scripts/run-layered-tests.js +247 -0
  19. package/scripts/safe-install.js +139 -139
  20. package/scripts/simple-publish.js +57 -59
  21. package/src/adapters/claude/install_claude_integration.js +292 -0
  22. package/src/adapters/codebuddy/install_codebuddy_integration.js +349 -0
  23. package/src/adapters/codex/install_codex_integration.js +395 -0
  24. package/src/adapters/copilot/install_copilot_integration.js +716 -0
  25. package/src/adapters/gemini/install_gemini_integration.js +304 -0
  26. package/src/adapters/iflow/install_iflow_integration.js +304 -0
  27. package/src/adapters/qoder/install_qoder_integration.js +1090 -0
  28. package/src/adapters/qwen/install_qwen_integration.js +285 -0
  29. package/src/auth.js +173 -173
  30. package/src/auth_command.js +208 -208
  31. package/src/calculator.js +313 -313
  32. package/src/cli/router.js +417 -38
  33. package/src/core/cache_cleaner.js +767 -744
  34. package/src/core/cli_help_analyzer.js +680 -674
  35. package/src/core/cli_parameter_handler.js +132 -127
  36. package/src/core/cli_tools.js +89 -89
  37. package/src/core/coordination/index.js +16 -16
  38. package/src/core/coordination/nodejs/AdapterManager.js +102 -89
  39. package/src/core/coordination/nodejs/CLCommunication.js +132 -124
  40. package/src/core/coordination/nodejs/CLIIntegrationManager.js +272 -236
  41. package/src/core/coordination/nodejs/HealthChecker.js +76 -77
  42. package/src/core/coordination/nodejs/HookDeploymentManager.js +263 -190
  43. package/src/core/coordination/nodejs/StatisticsCollector.js +71 -71
  44. package/src/core/coordination/nodejs/index.js +90 -72
  45. package/src/core/coordination/nodejs/utils/Logger.js +29 -29
  46. package/src/core/enhanced_installer.js +479 -456
  47. package/src/core/enhanced_uninstaller.js +638 -618
  48. package/src/core/error_handler.js +406 -406
  49. package/src/core/installer.js +815 -294
  50. package/src/core/memory_manager.js +83 -83
  51. package/src/core/rest_client.js +160 -160
  52. package/src/core/smart_router.js +249 -146
  53. package/src/core/upgrade_manager.js +76 -59
  54. package/src/data_encryption.js +143 -143
  55. package/src/data_structures.js +440 -440
  56. package/src/deploy.js +55 -55
  57. package/src/index.js +30 -30
  58. package/src/test/cli-availability-checker.js +194 -0
  59. package/src/test/test-environment.js +289 -0
  60. package/src/utils/helpers.js +35 -35
  61. package/src/utils.js +921 -915
  62. package/src/weatherProcessor.js +228 -228
  63. package/test/cache-cleaner-implemented.test.js +0 -328
  64. package/test/cache-cleaner.test.js +0 -390
  65. package/test/calculator.test.js +0 -215
  66. package/test/collision-test.js +0 -26
  67. package/test/comprehensive-enhanced-features.test.js +0 -252
  68. package/test/comprehensive-execution-test.js +0 -428
  69. package/test/conflict-prevention-test.js +0 -95
  70. package/test/cross-cli-detection-test.js +0 -33
  71. package/test/csv-processing-test.js +0 -36
  72. package/test/deploy-hooks-test.js +0 -250
  73. package/test/e2e/claude-cli-test.js +0 -128
  74. package/test/e2e/collaboration-test.js +0 -75
  75. package/test/e2e/comprehensive-test.js +0 -431
  76. package/test/e2e/error-handling-test.js +0 -90
  77. package/test/e2e/individual-tool-test.js +0 -143
  78. package/test/e2e/other-cli-test.js +0 -130
  79. package/test/e2e/qoder-cli-test.js +0 -128
  80. package/test/e2e/run-e2e-tests.js +0 -73
  81. package/test/e2e/test-data.js +0 -88
  82. package/test/e2e/test-utils.js +0 -222
  83. package/test/encryption-simple-test.js +0 -110
  84. package/test/encryption.test.js +0 -129
  85. package/test/enhanced-main-alignment.test.js +0 -298
  86. package/test/enhanced-uninstaller-implemented.test.js +0 -271
  87. package/test/enhanced-uninstaller.test.js +0 -284
  88. package/test/error-handling-test.js +0 -341
  89. package/test/fibonacci.test.js +0 -178
  90. package/test/final-deploy-test.js +0 -221
  91. package/test/final-install-test.js +0 -226
  92. package/test/hash-table-demo.js +0 -33
  93. package/test/hash-table-test.js +0 -26
  94. package/test/hash_table_test.js +0 -114
  95. package/test/hook-system-integration-test.js +0 -307
  96. package/test/iflow-integration-test.js +0 -292
  97. package/test/improved-install-test.js +0 -362
  98. package/test/install-command-test.js +0 -370
  99. package/test/json-parser-test.js +0 -161
  100. package/test/json-validation-test.js +0 -164
  101. package/test/natural-language-skills-test.js +0 -320
  102. package/test/nl-integration-test.js +0 -179
  103. package/test/parameter-parsing-test.js +0 -143
  104. package/test/plugin-deployment-test.js +0 -316
  105. package/test/postinstall-test.js +0 -269
  106. package/test/python-plugins-test.js +0 -259
  107. package/test/real-test.js +0 -435
  108. package/test/remaining-adapters-test.js +0 -256
  109. package/test/rest-client-test.js +0 -56
  110. package/test/rest_client.test.js +0 -85
  111. package/test/safe-installation-cleaner.test.js +0 -343
  112. package/test/simple-iflow-hook-test.js +0 -137
  113. package/test/stigmergy-upgrade-test.js +0 -243
  114. package/test/system-compatibility-test.js +0 -467
  115. package/test/tdd-deploy-fix-test.js +0 -324
  116. package/test/tdd-fixes-test.js +0 -211
  117. package/test/third-party-skills-test.js +0 -321
  118. package/test/tool-selection-integration-test.js +0 -158
  119. package/test/unit/calculator-full.test.js +0 -191
  120. package/test/unit/calculator-simple.test.js +0 -96
  121. package/test/unit/calculator.test.js +0 -97
  122. package/test/unit/cli-scanner.test.js +0 -291
  123. package/test/unit/cli_parameter_handler.test.js +0 -116
  124. package/test/unit/cross-cli-executor.test.js +0 -399
  125. package/test/weather-processor.test.js +0 -104
package/src/calculator.js CHANGED
@@ -1,313 +1,313 @@
1
- /**
2
- * Calculator class for performing basic arithmetic operations
3
- */
4
- class Calculator {
5
- /**
6
- * Create a new Calculator
7
- */
8
- constructor() {
9
- this.result = 0;
10
- }
11
-
12
- /**
13
- * Add two numbers
14
- * @param {number} a - First number
15
- * @param {number} b - Second number
16
- * @returns {number} Sum of a and b
17
- */
18
- add(a, b) {
19
- return a + b;
20
- }
21
-
22
- /**
23
- * Subtract two numbers
24
- * @param {number} a - First number
25
- * @param {number} b - Second number
26
- * @returns {number} Difference of a and b
27
- */
28
- subtract(a, b) {
29
- return a - b;
30
- }
31
-
32
- /**
33
- * Multiply two numbers
34
- * @param {number} a - First number
35
- * @param {number} b - Second number
36
- * @returns {number} Product of a and b
37
- */
38
- multiply(a, b) {
39
- return a * b;
40
- }
41
-
42
- /**
43
- * Divide two numbers
44
- * @param {number} a - Dividend
45
- * @param {number} b - Divisor
46
- * @returns {number} Quotient of a and b
47
- * @throws {Error} If dividing by zero
48
- */
49
- divide(a, b) {
50
- if (b === 0) {
51
- throw new Error('Cannot divide by zero');
52
- }
53
- return a / b;
54
- }
55
-
56
- /**
57
- * Calculate the power of a number
58
- * @param {number} base - Base number
59
- * @param {number} exponent - Exponent
60
- * @returns {number} Base raised to the power of exponent
61
- */
62
- power(base, exponent) {
63
- return Math.pow(base, exponent);
64
- }
65
-
66
- /**
67
- * Calculate the square root of a number
68
- * @param {number} a - Number to calculate square root for
69
- * @returns {number} Square root of a
70
- * @throws {Error} If calculating square root of negative number
71
- */
72
- sqrt(a) {
73
- if (a < 0) {
74
- throw new Error('Cannot calculate square root of negative number');
75
- }
76
- return Math.sqrt(a);
77
- }
78
-
79
- /**
80
- * Calculate the factorial of a number
81
- * @param {number} n - Number to calculate factorial for
82
- * @returns {number} Factorial of n
83
- * @throws {Error} If calculating factorial of negative number
84
- */
85
- factorial(n) {
86
- if (n < 0) {
87
- throw new Error('Cannot calculate factorial of negative number');
88
- }
89
-
90
- if (n === 0 || n === 1) {
91
- return 1;
92
- }
93
-
94
- let result = 1;
95
- for (let i = 2; i <= n; i++) {
96
- result *= i;
97
- }
98
- return result;
99
- }
100
-
101
- /**
102
- * Calculate percentage
103
- * @param {number} part - Part value
104
- * @param {number} whole - Whole value
105
- * @returns {number} Percentage of part in relation to whole
106
- */
107
- percentage(part, whole) {
108
- if (whole === 0) {
109
- throw new Error('Cannot calculate percentage with zero as whole');
110
- }
111
- return (part / whole) * 100;
112
- }
113
-
114
- /**
115
- * Find the maximum of two numbers
116
- * @param {number} a - First number
117
- * @param {number} b - Second number
118
- * @returns {number} The larger of the two numbers
119
- */
120
- max(a, b) {
121
- return Math.max(a, b);
122
- }
123
-
124
- /**
125
- * Find the minimum of two numbers
126
- * @param {number} a - First number
127
- * @param {number} b - Second number
128
- * @returns {number} The smaller of the two numbers
129
- */
130
- min(a, b) {
131
- return Math.min(a, b);
132
- }
133
-
134
- /**
135
- * Calculate the nth Fibonacci number
136
- * @param {number} n - Position in the Fibonacci sequence (0-indexed)
137
- * @returns {number} The nth Fibonacci number
138
- * @throws {Error} If n is negative or not an integer
139
- */
140
- fibonacci(n) {
141
- if (n < 0) {
142
- throw new Error('Cannot calculate Fibonacci of negative number');
143
- }
144
-
145
- if (!Number.isInteger(n)) {
146
- throw new Error('Fibonacci input must be an integer');
147
- }
148
-
149
- if (n === 0) return 0;
150
- if (n === 1) return 1;
151
-
152
- let prev = 0;
153
- let curr = 1;
154
-
155
- for (let i = 2; i <= n; i++) {
156
- const next = prev + curr;
157
- prev = curr;
158
- curr = next;
159
- }
160
-
161
- return curr;
162
- }
163
-
164
- /**
165
- * Generate a Fibonacci sequence up to n terms
166
- * @param {number} n - Number of terms to generate
167
- * @returns {Array<number>} Array containing the first n Fibonacci numbers
168
- * @throws {Error} If n is negative or not an integer
169
- */
170
- fibonacciSequence(n) {
171
- if (n < 0) {
172
- throw new Error(
173
- 'Cannot generate Fibonacci sequence with negative length',
174
- );
175
- }
176
-
177
- if (!Number.isInteger(n)) {
178
- throw new Error('Fibonacci sequence length must be an integer');
179
- }
180
-
181
- if (n === 0) return [];
182
- if (n === 1) return [0];
183
- if (n === 2) return [0, 1];
184
-
185
- const sequence = [0, 1];
186
-
187
- for (let i = 2; i < n; i++) {
188
- sequence[i] = sequence[i - 1] + sequence[i - 2];
189
- }
190
-
191
- return sequence;
192
- }
193
-
194
- /**
195
- * Calculate the circumference of a circle
196
- * @param {number} radius - The radius of the circle
197
- * @returns {number} The circumference of the circle
198
- * @throws {Error} If radius is negative
199
- */
200
- circleCircumference(radius) {
201
- if (radius < 0) {
202
- throw new Error('Radius cannot be negative');
203
- }
204
- return 2 * Math.PI * radius;
205
- }
206
-
207
- /**
208
- * Chain calculations with a running result
209
- * @param {number} initialValue - Starting value for calculations
210
- * @returns {CalculationChain} Object for chaining calculations
211
- */
212
- chain(initialValue = 0) {
213
- return new CalculationChain(initialValue);
214
- }
215
- }
216
-
217
- /**
218
- * Helper class for chaining calculations
219
- */
220
- class CalculationChain {
221
- /**
222
- * Create a new calculation chain
223
- * @param {number} initialValue - Starting value
224
- */
225
- constructor(initialValue) {
226
- this.result = initialValue;
227
- }
228
-
229
- /**
230
- * Add a number to the current result
231
- * @param {number} value - Number to add
232
- * @returns {CalculationChain} This chain instance
233
- */
234
- add(value) {
235
- this.result += value;
236
- return this;
237
- }
238
-
239
- /**
240
- * Subtract a number from the current result
241
- * @param {number} value - Number to subtract
242
- * @returns {CalculationChain} This chain instance
243
- */
244
- subtract(value) {
245
- this.result -= value;
246
- return this;
247
- }
248
-
249
- /**
250
- * Multiply the current result by a number
251
- * @param {number} value - Number to multiply by
252
- * @returns {CalculationChain} This chain instance
253
- */
254
- multiply(value) {
255
- this.result *= value;
256
- return this;
257
- }
258
-
259
- /**
260
- * Divide the current result by a number
261
- * @param {number} value - Number to divide by
262
- * @returns {CalculationChain} This chain instance
263
- * @throws {Error} If dividing by zero
264
- */
265
- divide(value) {
266
- if (value === 0) {
267
- throw new Error('Cannot divide by zero');
268
- }
269
- this.result /= value;
270
- return this;
271
- }
272
-
273
- /**
274
- * Raise the current result to a power
275
- * @param {number} exponent - Exponent
276
- * @returns {CalculationChain} This chain instance
277
- */
278
- power(exponent) {
279
- this.result = Math.pow(this.result, exponent);
280
- return this;
281
- }
282
-
283
- /**
284
- * Calculate the square root of the current result
285
- * @returns {CalculationChain} This chain instance
286
- * @throws {Error} If calculating square root of negative number
287
- */
288
- sqrt() {
289
- if (this.result < 0) {
290
- throw new Error('Cannot calculate square root of negative number');
291
- }
292
- this.result = Math.sqrt(this.result);
293
- return this;
294
- }
295
-
296
- /**
297
- * Get the final result of the chained calculations
298
- * @returns {number} Final result
299
- */
300
- equals() {
301
- return this.result;
302
- }
303
-
304
- /**
305
- * Get the current result without ending the chain
306
- * @returns {number} Current result
307
- */
308
- value() {
309
- return this.result;
310
- }
311
- }
312
-
313
- module.exports = Calculator;
1
+ /**
2
+ * Calculator class for performing basic arithmetic operations
3
+ */
4
+ class Calculator {
5
+ /**
6
+ * Create a new Calculator
7
+ */
8
+ constructor() {
9
+ this.result = 0;
10
+ }
11
+
12
+ /**
13
+ * Add two numbers
14
+ * @param {number} a - First number
15
+ * @param {number} b - Second number
16
+ * @returns {number} Sum of a and b
17
+ */
18
+ add(a, b) {
19
+ return a + b;
20
+ }
21
+
22
+ /**
23
+ * Subtract two numbers
24
+ * @param {number} a - First number
25
+ * @param {number} b - Second number
26
+ * @returns {number} Difference of a and b
27
+ */
28
+ subtract(a, b) {
29
+ return a - b;
30
+ }
31
+
32
+ /**
33
+ * Multiply two numbers
34
+ * @param {number} a - First number
35
+ * @param {number} b - Second number
36
+ * @returns {number} Product of a and b
37
+ */
38
+ multiply(a, b) {
39
+ return a * b;
40
+ }
41
+
42
+ /**
43
+ * Divide two numbers
44
+ * @param {number} a - Dividend
45
+ * @param {number} b - Divisor
46
+ * @returns {number} Quotient of a and b
47
+ * @throws {Error} If dividing by zero
48
+ */
49
+ divide(a, b) {
50
+ if (b === 0) {
51
+ throw new Error('Cannot divide by zero');
52
+ }
53
+ return a / b;
54
+ }
55
+
56
+ /**
57
+ * Calculate the power of a number
58
+ * @param {number} base - Base number
59
+ * @param {number} exponent - Exponent
60
+ * @returns {number} Base raised to the power of exponent
61
+ */
62
+ power(base, exponent) {
63
+ return Math.pow(base, exponent);
64
+ }
65
+
66
+ /**
67
+ * Calculate the square root of a number
68
+ * @param {number} a - Number to calculate square root for
69
+ * @returns {number} Square root of a
70
+ * @throws {Error} If calculating square root of negative number
71
+ */
72
+ sqrt(a) {
73
+ if (a < 0) {
74
+ throw new Error('Cannot calculate square root of negative number');
75
+ }
76
+ return Math.sqrt(a);
77
+ }
78
+
79
+ /**
80
+ * Calculate the factorial of a number
81
+ * @param {number} n - Number to calculate factorial for
82
+ * @returns {number} Factorial of n
83
+ * @throws {Error} If calculating factorial of negative number
84
+ */
85
+ factorial(n) {
86
+ if (n < 0) {
87
+ throw new Error('Cannot calculate factorial of negative number');
88
+ }
89
+
90
+ if (n === 0 || n === 1) {
91
+ return 1;
92
+ }
93
+
94
+ let result = 1;
95
+ for (let i = 2; i <= n; i++) {
96
+ result *= i;
97
+ }
98
+ return result;
99
+ }
100
+
101
+ /**
102
+ * Calculate percentage
103
+ * @param {number} part - Part value
104
+ * @param {number} whole - Whole value
105
+ * @returns {number} Percentage of part in relation to whole
106
+ */
107
+ percentage(part, whole) {
108
+ if (whole === 0) {
109
+ throw new Error('Cannot calculate percentage with zero as whole');
110
+ }
111
+ return (part / whole) * 100;
112
+ }
113
+
114
+ /**
115
+ * Find the maximum of two numbers
116
+ * @param {number} a - First number
117
+ * @param {number} b - Second number
118
+ * @returns {number} The larger of the two numbers
119
+ */
120
+ max(a, b) {
121
+ return Math.max(a, b);
122
+ }
123
+
124
+ /**
125
+ * Find the minimum of two numbers
126
+ * @param {number} a - First number
127
+ * @param {number} b - Second number
128
+ * @returns {number} The smaller of the two numbers
129
+ */
130
+ min(a, b) {
131
+ return Math.min(a, b);
132
+ }
133
+
134
+ /**
135
+ * Calculate the nth Fibonacci number
136
+ * @param {number} n - Position in the Fibonacci sequence (0-indexed)
137
+ * @returns {number} The nth Fibonacci number
138
+ * @throws {Error} If n is negative or not an integer
139
+ */
140
+ fibonacci(n) {
141
+ if (n < 0) {
142
+ throw new Error('Cannot calculate Fibonacci of negative number');
143
+ }
144
+
145
+ if (!Number.isInteger(n)) {
146
+ throw new Error('Fibonacci input must be an integer');
147
+ }
148
+
149
+ if (n === 0) return 0;
150
+ if (n === 1) return 1;
151
+
152
+ let prev = 0;
153
+ let curr = 1;
154
+
155
+ for (let i = 2; i <= n; i++) {
156
+ const next = prev + curr;
157
+ prev = curr;
158
+ curr = next;
159
+ }
160
+
161
+ return curr;
162
+ }
163
+
164
+ /**
165
+ * Generate a Fibonacci sequence up to n terms
166
+ * @param {number} n - Number of terms to generate
167
+ * @returns {Array<number>} Array containing the first n Fibonacci numbers
168
+ * @throws {Error} If n is negative or not an integer
169
+ */
170
+ fibonacciSequence(n) {
171
+ if (n < 0) {
172
+ throw new Error(
173
+ 'Cannot generate Fibonacci sequence with negative length',
174
+ );
175
+ }
176
+
177
+ if (!Number.isInteger(n)) {
178
+ throw new Error('Fibonacci sequence length must be an integer');
179
+ }
180
+
181
+ if (n === 0) return [];
182
+ if (n === 1) return [0];
183
+ if (n === 2) return [0, 1];
184
+
185
+ const sequence = [0, 1];
186
+
187
+ for (let i = 2; i < n; i++) {
188
+ sequence[i] = sequence[i - 1] + sequence[i - 2];
189
+ }
190
+
191
+ return sequence;
192
+ }
193
+
194
+ /**
195
+ * Calculate the circumference of a circle
196
+ * @param {number} radius - The radius of the circle
197
+ * @returns {number} The circumference of the circle
198
+ * @throws {Error} If radius is negative
199
+ */
200
+ circleCircumference(radius) {
201
+ if (radius < 0) {
202
+ throw new Error('Radius cannot be negative');
203
+ }
204
+ return 2 * Math.PI * radius;
205
+ }
206
+
207
+ /**
208
+ * Chain calculations with a running result
209
+ * @param {number} initialValue - Starting value for calculations
210
+ * @returns {CalculationChain} Object for chaining calculations
211
+ */
212
+ chain(initialValue = 0) {
213
+ return new CalculationChain(initialValue);
214
+ }
215
+ }
216
+
217
+ /**
218
+ * Helper class for chaining calculations
219
+ */
220
+ class CalculationChain {
221
+ /**
222
+ * Create a new calculation chain
223
+ * @param {number} initialValue - Starting value
224
+ */
225
+ constructor(initialValue) {
226
+ this.result = initialValue;
227
+ }
228
+
229
+ /**
230
+ * Add a number to the current result
231
+ * @param {number} value - Number to add
232
+ * @returns {CalculationChain} This chain instance
233
+ */
234
+ add(value) {
235
+ this.result += value;
236
+ return this;
237
+ }
238
+
239
+ /**
240
+ * Subtract a number from the current result
241
+ * @param {number} value - Number to subtract
242
+ * @returns {CalculationChain} This chain instance
243
+ */
244
+ subtract(value) {
245
+ this.result -= value;
246
+ return this;
247
+ }
248
+
249
+ /**
250
+ * Multiply the current result by a number
251
+ * @param {number} value - Number to multiply by
252
+ * @returns {CalculationChain} This chain instance
253
+ */
254
+ multiply(value) {
255
+ this.result *= value;
256
+ return this;
257
+ }
258
+
259
+ /**
260
+ * Divide the current result by a number
261
+ * @param {number} value - Number to divide by
262
+ * @returns {CalculationChain} This chain instance
263
+ * @throws {Error} If dividing by zero
264
+ */
265
+ divide(value) {
266
+ if (value === 0) {
267
+ throw new Error('Cannot divide by zero');
268
+ }
269
+ this.result /= value;
270
+ return this;
271
+ }
272
+
273
+ /**
274
+ * Raise the current result to a power
275
+ * @param {number} exponent - Exponent
276
+ * @returns {CalculationChain} This chain instance
277
+ */
278
+ power(exponent) {
279
+ this.result = Math.pow(this.result, exponent);
280
+ return this;
281
+ }
282
+
283
+ /**
284
+ * Calculate the square root of the current result
285
+ * @returns {CalculationChain} This chain instance
286
+ * @throws {Error} If calculating square root of negative number
287
+ */
288
+ sqrt() {
289
+ if (this.result < 0) {
290
+ throw new Error('Cannot calculate square root of negative number');
291
+ }
292
+ this.result = Math.sqrt(this.result);
293
+ return this;
294
+ }
295
+
296
+ /**
297
+ * Get the final result of the chained calculations
298
+ * @returns {number} Final result
299
+ */
300
+ equals() {
301
+ return this.result;
302
+ }
303
+
304
+ /**
305
+ * Get the current result without ending the chain
306
+ * @returns {number} Current result
307
+ */
308
+ value() {
309
+ return this.result;
310
+ }
311
+ }
312
+
313
+ module.exports = Calculator;