zeropoint-node 1.0.0 → 1.0.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 +38 -105
- package/dist/__tests__/api/ProductionAPI.test.js +20 -0
- package/dist/__tests__/artifacts/ArtifactRegistry.test.js +248 -0
- package/dist/__tests__/basic.test.js +104 -0
- package/dist/__tests__/config/constants.test.js +20 -0
- package/dist/__tests__/consciousness/ConsciousnessField.test.js +20 -0
- package/dist/__tests__/consciousness/SelfEvolvingConsciousness.test.js +185 -0
- package/dist/__tests__/core/AbstractField.test.js +81 -0
- package/dist/__tests__/core/CoilMixin.test.js +20 -0
- package/dist/__tests__/core/CoilSystem.test.js +20 -0
- package/dist/__tests__/core/ComplianceSystem.test.js +141 -0
- package/dist/__tests__/core/InfiniteDimensionalRefactor.test.js +258 -0
- package/dist/__tests__/core/LivingAdapter.test.js +31 -0
- package/dist/__tests__/core/MathUtils.test.js +20 -0
- package/dist/__tests__/core/NetworkNode.test.js +20 -0
- package/dist/__tests__/core/Observer.test.js +20 -0
- package/dist/__tests__/core/OperationRegistry.test.js +48 -0
- package/dist/__tests__/core/PatternRecognition.test.js +20 -0
- package/dist/__tests__/core/PatternRegistry.test.js +20 -0
- package/dist/__tests__/core/ScientificCompliance.test.js +58 -0
- package/dist/__tests__/core/SharedConstants.test.js +20 -0
- package/dist/__tests__/core/UnifiedMetaphysicalInterface.test.js +20 -0
- package/dist/__tests__/core/UnifiedSystem.test.js +20 -0
- package/dist/__tests__/core/UnifiedTypes.test.js +20 -0
- package/dist/__tests__/core/UnifiedVoidEquations.test.js +20 -0
- package/dist/__tests__/core/VortexMathAdapter.test.js +31 -0
- package/dist/__tests__/core/ZeroPoint.test.js +71 -0
- package/dist/__tests__/core/ZeroPointSystem.test.js +219 -0
- package/dist/__tests__/emergence/patterns.test.js +20 -0
- package/dist/__tests__/field/EmergenceLedger.test.js +20 -0
- package/dist/__tests__/field/ObserverAwareField.test.js +20 -0
- package/dist/__tests__/field/ResonanceConsensus.test.js +20 -0
- package/dist/__tests__/git-integration.test.js +201 -0
- package/dist/__tests__/globalSetup.js +80 -0
- package/dist/__tests__/globalTeardown.js +28 -0
- package/dist/__tests__/index.test.js +20 -0
- package/dist/__tests__/integration/ZeroPointIntegration.test.js +221 -0
- package/dist/__tests__/integrity/FieldIntegrity.test.js +20 -0
- package/dist/__tests__/knowledge/KnowledgeSystem.test.js +158 -0
- package/dist/__tests__/knowledge/KnowledgeSystemAnalysis.test.js +219 -0
- package/dist/__tests__/knowledge/KnowledgeSystemAutoGenerated.test.js +41 -0
- package/dist/__tests__/laws/MetaphysicalLawRegistry.test.js +183 -0
- package/dist/__tests__/living/LivingTestOrganism.js +246 -0
- package/dist/__tests__/living/LivingTestOrganism.test.js +124 -0
- package/dist/__tests__/math/AdvancedVBM.test.js +367 -0
- package/dist/__tests__/math/FlowerOfLife.test.js +344 -0
- package/dist/__tests__/math/FractalColorSystem.test.js +20 -0
- package/dist/__tests__/math/FractalMath.test.js +20 -0
- package/dist/__tests__/math/MathUtils.test.js +20 -0
- package/dist/__tests__/math/RodinCoil.test.js +20 -0
- package/dist/__tests__/math/ToroidalGeometry.test.js +20 -0
- package/dist/__tests__/math/VBM.test.js +538 -0
- package/dist/__tests__/math/VBMColorSystem.test.js +20 -0
- package/dist/__tests__/math/VortexMath.test.js +20 -0
- package/dist/__tests__/math/ZeroUnity.test.js +77 -0
- package/dist/__tests__/monitoring/HealthMonitor.test.js +20 -0
- package/dist/__tests__/performance/ZeroPointPerformance.test.js +371 -0
- package/dist/__tests__/physics/PlasmaCosmology.test.js +155 -0
- package/dist/__tests__/pwa/ConsciousnessPWA.test.js +20 -0
- package/dist/__tests__/qa/AutoGeneratedFromQA.test.js +195 -0
- package/dist/__tests__/qa/QAAsSourceOfTruth.test.js +69 -0
- package/dist/__tests__/setup.js +132 -0
- package/dist/__tests__/simple.test.js +51 -0
- package/dist/__tests__/stimulus/Application.test.js +272 -0
- package/dist/__tests__/stimulus/BaseController.test.js +198 -0
- package/dist/__tests__/stimulus/ControllerUtils.test.js +316 -0
- package/dist/__tests__/stimulus/MetaphysicalController.test.js +310 -0
- package/dist/__tests__/stimulus/ZeroPointController.test.js +252 -0
- package/dist/__tests__/training/ConsciousnessTrainingModel.test.js +335 -0
- package/dist/__tests__/types/DeviceConfig.test.js +20 -0
- package/dist/__tests__/types/UnifiedExports.test.js +20 -0
- package/dist/__tests__/unity/FieldUnity.test.js +20 -0
- package/dist/__tests__/utils/Cache.test.js +20 -0
- package/dist/__tests__/utils/GitIntegration.test.js +20 -0
- package/dist/__tests__/utils/Logger.test.js +20 -0
- package/dist/__tests__/utils/ResourceCleanup.test.js +20 -0
- package/dist/__tests__/utils/errorSimulator.js +40 -0
- package/dist/__tests__/utils/goldenRatioCache.js +36 -0
- package/dist/__tests__/void/VoidSystem.test.js +427 -0
- package/dist/api/ProductionAPI.js +313 -0
- package/dist/artifacts/ArtifactRegistry.js +122 -0
- package/dist/artifacts/CrystalArtifacts.js +106 -0
- package/dist/artifacts/MetaphysicalArtifact.js +75 -0
- package/dist/browser-standalone.js +191 -0
- package/dist/browser.js +157 -0
- package/dist/config/constants.js +57 -0
- package/dist/consciousness/ConsciousnessField.js +55 -0
- package/dist/consciousness/SelfEvolvingConsciousness.js +303 -0
- package/dist/core/AbstractField.js +30 -0
- package/dist/core/BrowserNetworkNode.js +309 -0
- package/dist/core/CoilMixin.js +216 -0
- package/dist/core/CoilSystem.js +204 -0
- package/dist/core/ComplianceSystem.js +291 -0
- package/dist/core/Dimension.js +2 -0
- package/dist/core/DimensionRegistry.js +141 -0
- package/dist/core/Field.js +2 -0
- package/dist/core/InfiniteDimensionalRefactor.js +389 -0
- package/dist/core/KnowledgeRegistry.js +273 -0
- package/dist/core/LivingAdapter.js +29 -0
- package/dist/core/MathUtils.js +297 -0
- package/dist/core/NetworkNode.js +348 -0
- package/dist/core/Observer.js +101 -0
- package/dist/core/Operation.js +59 -0
- package/dist/core/OperationRegistry.js +20 -0
- package/dist/core/Pattern.js +2 -0
- package/dist/core/PatternRecognition.js +493 -0
- package/dist/core/PatternRegistry.js +282 -0
- package/dist/core/ScientificCompliance.js +91 -0
- package/dist/core/SharedConstants.js +306 -0
- package/dist/core/UnifiedMetaphysicalInterface.js +533 -0
- package/dist/core/UnifiedSystem.js +317 -0
- package/dist/core/UnifiedTypes.js +5 -0
- package/dist/core/UnifiedVoidEquations.js +605 -0
- package/dist/core/VoidMatterConstants.js +9 -0
- package/dist/core/VortexMathAdapter.js +32 -0
- package/dist/core/ZeroPoint.js +971 -0
- package/dist/core/ZeroPointSystem.js +343 -0
- package/dist/core/applyLaws.js +12 -0
- package/dist/core/applyOperations.js +21 -0
- package/dist/devices/DeviceRegistry.js +151 -0
- package/dist/devices/ResonanceDevice.js +92 -0
- package/dist/devices/ResonanceDevices.js +139 -0
- package/dist/dimensions/Dimension.js +2 -0
- package/dist/emergence/AdvancedEmergence.js +930 -0
- package/dist/emergence/patterns.js +12 -0
- package/dist/field/EmergenceLedger.js +310 -0
- package/dist/field/ObserverAwareField.js +222 -0
- package/dist/field/ResonanceConsensus.js +330 -0
- package/dist/fields/Field.js +2 -0
- package/dist/geometry/MetatronsCube.js +28 -0
- package/dist/geometry/SacredGeometryPattern.js +15 -0
- package/dist/geometry/SacredGeometryRegistry.js +15 -0
- package/dist/geometry/__tests__/SacredGeometryRegistry.test.js +18 -0
- package/dist/index.js +232 -0
- package/dist/integrity/FieldIntegrity.js +237 -0
- package/dist/knowledge/KnowledgeSystem.js +938 -0
- package/dist/laws/MetaphysicalLaw.js +2 -0
- package/dist/laws/MetaphysicalLawRegistry.js +103 -0
- package/dist/laws/hermeticLaws.js +311 -0
- package/dist/math/AdvancedVBM.js +537 -0
- package/dist/math/FlowerOfLife.js +256 -0
- package/dist/math/FractalColorSystem.js +239 -0
- package/dist/math/FractalMath.js +187 -0
- package/dist/math/MathUtils.js +289 -0
- package/dist/math/RodinCoil.js +258 -0
- package/dist/math/ToroidalGeometry.js +230 -0
- package/dist/math/VBM.js +718 -0
- package/dist/math/VBMColorSystem.js +301 -0
- package/dist/math/VortexMath.js +170 -0
- package/dist/monitoring/HealthMonitor.js +297 -0
- package/dist/patterns/Pattern.js +2 -0
- package/dist/patterns/SacredGeometryRegistry.js +37 -0
- package/dist/physics/BlackHolePhysics.js +54 -0
- package/dist/physics/ConsciousnessPhysics.js +241 -0
- package/dist/physics/FractalUniverse.js +54 -0
- package/dist/physics/HolographicUniverse.js +54 -0
- package/dist/physics/PlasmaCosmology.js +134 -0
- package/dist/pwa/ConsciousnessPWA.js +300 -0
- package/dist/src/__tests__/globalTeardown.d.ts +10 -8
- package/dist/src/__tests__/globalTeardown.d.ts.map +1 -1
- package/dist/src/__tests__/globalTeardown.js +12 -71
- package/dist/src/__tests__/globalTeardown.js.map +1 -1
- package/dist/src/__tests__/living/LivingTestOrganism.d.ts +4 -0
- package/dist/src/__tests__/living/LivingTestOrganism.d.ts.map +1 -1
- package/dist/src/__tests__/living/LivingTestOrganism.js +8 -0
- package/dist/src/__tests__/living/LivingTestOrganism.js.map +1 -1
- package/dist/src/__tests__/utils/errorSimulator.d.ts +1 -1
- package/dist/src/__tests__/utils/goldenRatioCache.d.ts +1 -1
- package/dist/src/config/constants.d.ts +53 -0
- package/dist/src/config/constants.d.ts.map +1 -0
- package/dist/src/config/constants.js +58 -0
- package/dist/src/config/constants.js.map +1 -0
- package/dist/src/consciousness/ConsciousnessField.d.ts +42 -51
- package/dist/src/consciousness/ConsciousnessField.d.ts.map +1 -1
- package/dist/src/consciousness/ConsciousnessField.js +187 -200
- package/dist/src/consciousness/ConsciousnessField.js.map +1 -1
- package/dist/src/consciousness/SelfEvolvingConsciousness.d.ts +47 -18
- package/dist/src/consciousness/SelfEvolvingConsciousness.d.ts.map +1 -1
- package/dist/src/consciousness/SelfEvolvingConsciousness.js +151 -44
- package/dist/src/consciousness/SelfEvolvingConsciousness.js.map +1 -1
- package/dist/src/core/CoilMixin.d.ts +6 -6
- package/dist/src/core/CoilSystem.d.ts +6 -2
- package/dist/src/core/CoilSystem.d.ts.map +1 -1
- package/dist/src/core/CoilSystem.js +30 -21
- package/dist/src/core/CoilSystem.js.map +1 -1
- package/dist/src/core/InfiniteDimensionalRefactor.d.ts +145 -0
- package/dist/src/core/InfiniteDimensionalRefactor.d.ts.map +1 -0
- package/dist/src/core/InfiniteDimensionalRefactor.js +390 -0
- package/dist/src/core/InfiniteDimensionalRefactor.js.map +1 -0
- package/dist/src/core/NetworkNode.d.ts +3 -3
- package/dist/src/core/Observer.d.ts +12 -9
- package/dist/src/core/Observer.d.ts.map +1 -1
- package/dist/src/core/Observer.js +2 -2
- package/dist/src/core/Observer.js.map +1 -1
- package/dist/src/core/PatternRecognition.d.ts +63 -13
- package/dist/src/core/PatternRecognition.d.ts.map +1 -1
- package/dist/src/core/PatternRecognition.js +162 -88
- package/dist/src/core/PatternRecognition.js.map +1 -1
- package/dist/src/core/PatternRegistry.d.ts +99 -0
- package/dist/src/core/PatternRegistry.d.ts.map +1 -0
- package/dist/src/core/PatternRegistry.js +283 -0
- package/dist/src/core/PatternRegistry.js.map +1 -0
- package/dist/src/core/SharedConstants.d.ts +62 -9
- package/dist/src/core/SharedConstants.d.ts.map +1 -1
- package/dist/src/core/SharedConstants.js +83 -21
- package/dist/src/core/SharedConstants.js.map +1 -1
- package/dist/src/core/UnifiedMetaphysicalInterface.d.ts +173 -0
- package/dist/src/core/UnifiedMetaphysicalInterface.d.ts.map +1 -0
- package/dist/src/core/UnifiedMetaphysicalInterface.js +534 -0
- package/dist/src/core/UnifiedMetaphysicalInterface.js.map +1 -0
- package/dist/src/core/UnifiedSystem.d.ts +15 -12
- package/dist/src/core/UnifiedSystem.d.ts.map +1 -1
- package/dist/src/core/UnifiedSystem.js +5 -1
- package/dist/src/core/UnifiedSystem.js.map +1 -1
- package/dist/src/core/UnifiedTypes.d.ts +193 -0
- package/dist/src/core/UnifiedTypes.d.ts.map +1 -0
- package/dist/src/core/UnifiedTypes.js +6 -0
- package/dist/src/core/UnifiedTypes.js.map +1 -0
- package/dist/src/core/UnifiedVoidEquations.d.ts +3 -1
- package/dist/src/core/UnifiedVoidEquations.d.ts.map +1 -1
- package/dist/src/core/UnifiedVoidEquations.js +84 -0
- package/dist/src/core/UnifiedVoidEquations.js.map +1 -1
- package/dist/src/core/ZeroPoint.d.ts +101 -10
- package/dist/src/core/ZeroPoint.d.ts.map +1 -1
- package/dist/src/core/ZeroPoint.js +262 -18
- package/dist/src/core/ZeroPoint.js.map +1 -1
- package/dist/src/emergence/AdvancedEmergence.d.ts +19 -16
- package/dist/src/emergence/AdvancedEmergence.d.ts.map +1 -1
- package/dist/src/emergence/AdvancedEmergence.js +88 -52
- package/dist/src/emergence/AdvancedEmergence.js.map +1 -1
- package/dist/src/field/EmergenceLedger.d.ts +9 -18
- package/dist/src/field/EmergenceLedger.d.ts.map +1 -1
- package/dist/src/field/EmergenceLedger.js +9 -4
- package/dist/src/field/EmergenceLedger.js.map +1 -1
- package/dist/src/field/ObserverAwareField.d.ts +69 -65
- package/dist/src/field/ObserverAwareField.d.ts.map +1 -1
- package/dist/src/field/ObserverAwareField.js +158 -168
- package/dist/src/field/ObserverAwareField.js.map +1 -1
- package/dist/src/field/ResonanceConsensus.d.ts +4 -11
- package/dist/src/field/ResonanceConsensus.d.ts.map +1 -1
- package/dist/src/field/ResonanceConsensus.js +15 -10
- package/dist/src/field/ResonanceConsensus.js.map +1 -1
- package/dist/src/index.d.ts +5 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +19 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/integrity/FieldIntegrity.d.ts +3 -8
- package/dist/src/integrity/FieldIntegrity.d.ts.map +1 -1
- package/dist/src/integrity/FieldIntegrity.js.map +1 -1
- package/dist/src/knowledge/KnowledgeSystem.d.ts +37 -55
- package/dist/src/knowledge/KnowledgeSystem.d.ts.map +1 -1
- package/dist/src/knowledge/KnowledgeSystem.js +281 -589
- package/dist/src/knowledge/KnowledgeSystem.js.map +1 -1
- package/dist/src/math/AdvancedVBM.d.ts +6 -6
- package/dist/src/math/FractalColorSystem.d.ts +1 -1
- package/dist/src/math/FractalColorSystem.js +3 -3
- package/dist/src/math/FractalColorSystem.js.map +1 -1
- package/dist/src/math/FractalMath.d.ts +9 -1
- package/dist/src/math/FractalMath.d.ts.map +1 -1
- package/dist/src/math/FractalMath.js +18 -5
- package/dist/src/math/FractalMath.js.map +1 -1
- package/dist/src/math/MathUtils.d.ts +3 -10
- package/dist/src/math/MathUtils.d.ts.map +1 -1
- package/dist/src/math/MathUtils.js +12 -20
- package/dist/src/math/MathUtils.js.map +1 -1
- package/dist/src/math/ToroidalGeometry.d.ts +1 -1
- package/dist/src/math/VBM.d.ts +2 -2
- package/dist/src/math/VortexMath.d.ts +1 -1
- package/dist/src/monitoring/HealthMonitor.d.ts +1 -1
- package/dist/src/monitoring/HealthMonitor.d.ts.map +1 -1
- package/dist/src/monitoring/HealthMonitor.js +29 -27
- package/dist/src/monitoring/HealthMonitor.js.map +1 -1
- package/dist/src/types/UnifiedExports.d.ts +4 -0
- package/dist/src/types/UnifiedExports.d.ts.map +1 -0
- package/dist/src/types/UnifiedExports.js +21 -0
- package/dist/src/types/UnifiedExports.js.map +1 -0
- package/dist/src/unity/FieldUnity.d.ts +1 -1
- package/dist/src/utils/Cache.d.ts +2 -2
- package/dist/src/utils/Cache.d.ts.map +1 -1
- package/dist/src/utils/Cache.js +7 -4
- package/dist/src/utils/Cache.js.map +1 -1
- package/dist/src/utils/GitIntegration.d.ts +1 -1
- package/dist/src/utils/Logger.d.ts +7 -7
- package/dist/src/utils/Logger.d.ts.map +1 -1
- package/dist/src/utils/Logger.js +5 -1
- package/dist/src/utils/Logger.js.map +1 -1
- package/dist/src/utils/ResourceCleanup.d.ts +33 -0
- package/dist/src/utils/ResourceCleanup.d.ts.map +1 -0
- package/dist/src/utils/ResourceCleanup.js +83 -0
- package/dist/src/utils/ResourceCleanup.js.map +1 -0
- package/dist/src/void/VoidSystem.d.ts +18 -18
- package/dist/stimulus/application.js +148 -0
- package/dist/stimulus/base/BaseController.js +141 -0
- package/dist/stimulus/controllers/MetaphysicalController.js +105 -0
- package/dist/stimulus/controllers/ZeroPointController.js +85 -0
- package/dist/stimulus/types/ControllerTypes.js +18 -0
- package/dist/stimulus/utils/ControllerUtils.js +192 -0
- package/dist/stimulus-entry.js +109 -0
- package/dist/training/ConsciousnessTrainingModel.js +301 -0
- package/dist/training/NeuralConsciousnessNetwork.js +311 -0
- package/dist/training/TrainingModelRegistry.js +243 -0
- package/dist/training/index.js +174 -0
- package/dist/types/DeviceConfig.js +29 -0
- package/dist/types/UnifiedExports.js +20 -0
- package/dist/unity/FieldUnity.js +325 -0
- package/dist/utils/BrowserCrypto.js +44 -0
- package/dist/utils/BrowserWebSocket.js +38 -0
- package/dist/utils/Cache.js +263 -0
- package/dist/utils/GitIntegration.js +127 -0
- package/dist/utils/Logger.js +249 -0
- package/dist/utils/ResourceCleanup.js +82 -0
- package/dist/utils/applyLaws.js +6 -0
- package/dist/void/VoidSystem.js +423 -0
- package/docs/API.md +176 -3
- package/docs/CONSCIOUSNESS_EXPANSION.md +369 -0
- package/docs/EVENT_HORIZON_METHODOLOGY.md +274 -0
- package/docs/FLOWER_OF_LIFE.md +300 -0
- package/docs/METAPHYSICAL.md +21 -1
- package/docs/METAPHYSICAL_DEBUGGING.md +493 -0
- package/docs/README.md +117 -15
- package/docs/TESTING_GUIDE.md +430 -0
- package/docs/UNIFIED_CREATORS.md +261 -0
- package/package.json +34 -64
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unified Mathematical Utilities for ZeroPoint System
|
|
4
|
+
*
|
|
5
|
+
* Centralized mathematical operations and calculations used across
|
|
6
|
+
* all ZeroPoint modules to eliminate duplication and ensure consistency.
|
|
7
|
+
*
|
|
8
|
+
* This module embodies the principle of mathematical unity - all
|
|
9
|
+
* calculations follow the same underlying patterns and principles.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MathUtils = void 0;
|
|
13
|
+
const SharedConstants_1 = require("./SharedConstants");
|
|
14
|
+
/**
|
|
15
|
+
* Core mathematical operations
|
|
16
|
+
*/
|
|
17
|
+
class MathUtils {
|
|
18
|
+
/**
|
|
19
|
+
* Calculate distance between two points in 3D space
|
|
20
|
+
*/
|
|
21
|
+
static distance3D(x1, y1, z1, x2, y2, z2) {
|
|
22
|
+
const dx = x2 - x1;
|
|
23
|
+
const dy = y2 - y1;
|
|
24
|
+
const dz = z2 - z1;
|
|
25
|
+
return Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Calculate distance between two points in 2D space
|
|
29
|
+
*/
|
|
30
|
+
static distance2D(x1, y1, x2, y2) {
|
|
31
|
+
const dx = x2 - x1;
|
|
32
|
+
const dy = y2 - y1;
|
|
33
|
+
return Math.sqrt(dx * dx + dy * dy);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Calculate angle between two points
|
|
37
|
+
*/
|
|
38
|
+
static angleBetweenPoints(x1, y1, x2, y2) {
|
|
39
|
+
return Math.atan2(y2 - y1, x2 - x1);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Normalize angle to 0-2π range
|
|
43
|
+
*/
|
|
44
|
+
static normalizeAngle(angle) {
|
|
45
|
+
while (angle < 0)
|
|
46
|
+
angle += SharedConstants_1.MATH_CONSTANTS.TWO_PI;
|
|
47
|
+
while (angle >= SharedConstants_1.MATH_CONSTANTS.TWO_PI)
|
|
48
|
+
angle -= SharedConstants_1.MATH_CONSTANTS.TWO_PI;
|
|
49
|
+
return angle;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Convert degrees to radians
|
|
53
|
+
*/
|
|
54
|
+
static degreesToRadians(degrees) {
|
|
55
|
+
return degrees * (SharedConstants_1.MATH_CONSTANTS.PI / 180);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Convert radians to degrees
|
|
59
|
+
*/
|
|
60
|
+
static radiansToDegrees(radians) {
|
|
61
|
+
return radians * (180 / SharedConstants_1.MATH_CONSTANTS.PI);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Calculate exponential decay
|
|
65
|
+
*/
|
|
66
|
+
static exponentialDecay(value, decayRate, time) {
|
|
67
|
+
return value * Math.exp(-decayRate * time);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Calculate harmonic resonance between two frequencies
|
|
71
|
+
*/
|
|
72
|
+
static harmonicResonance(freq1, freq2, strength = 1.0) {
|
|
73
|
+
const beatFrequency = Math.abs(freq1 - freq2);
|
|
74
|
+
return Math.exp(-beatFrequency) * strength;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Apply vortex transform to a value
|
|
78
|
+
*/
|
|
79
|
+
static applyVortexTransform(value) {
|
|
80
|
+
const sequenceValue = Math.floor(value % 9);
|
|
81
|
+
if (sequenceValue === 0)
|
|
82
|
+
return SharedConstants_1.VORTEX_CONSTANTS.VORTEX_CENTER;
|
|
83
|
+
if (sequenceValue <= 6) {
|
|
84
|
+
return SharedConstants_1.VORTEX_CONSTANTS.VORTEX_SEQUENCE[sequenceValue - 1] || 1;
|
|
85
|
+
}
|
|
86
|
+
return SharedConstants_1.VORTEX_CONSTANTS.VORTEX_SEQUENCE[sequenceValue - 4] || 1;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Calculate vortex field strength at a point
|
|
90
|
+
*/
|
|
91
|
+
static calculateVortexField(x, y, z, vortexStrength = 1.0, fieldIntensity = 0.5) {
|
|
92
|
+
const distance = Math.sqrt(x * x + y * y + z * z);
|
|
93
|
+
const angle = Math.atan2(y, x);
|
|
94
|
+
const sequenceIndex = Math.floor(angle / (SharedConstants_1.MATH_CONSTANTS.PI / 3)) % 6;
|
|
95
|
+
const sequenceValue = SharedConstants_1.VORTEX_CONSTANTS.VORTEX_SEQUENCE[sequenceIndex] || 1;
|
|
96
|
+
const baseField = vortexStrength / (1 + distance * distance);
|
|
97
|
+
const vortexModulation = Math.sin(sequenceValue * angle) * fieldIntensity;
|
|
98
|
+
return baseField * (1 + vortexModulation);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Calculate toroidal flow rate
|
|
102
|
+
*/
|
|
103
|
+
static calculateToroidalFlow(radius, angularVelocity, vortexModulation = 1.0) {
|
|
104
|
+
const circumference = SharedConstants_1.MATH_CONSTANTS.TWO_PI * radius;
|
|
105
|
+
return circumference * angularVelocity * vortexModulation;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Calculate Fibonacci sequence up to n terms
|
|
109
|
+
*/
|
|
110
|
+
static fibonacciSequence(n) {
|
|
111
|
+
if (n <= 0)
|
|
112
|
+
return [];
|
|
113
|
+
if (n === 1)
|
|
114
|
+
return [1];
|
|
115
|
+
if (n === 2)
|
|
116
|
+
return [1, 1];
|
|
117
|
+
const sequence = [1, 1];
|
|
118
|
+
for (let i = 2; i < n; i++) {
|
|
119
|
+
const prev1 = sequence[i - 1];
|
|
120
|
+
const prev2 = sequence[i - 2];
|
|
121
|
+
if (prev1 !== undefined && prev2 !== undefined) {
|
|
122
|
+
sequence.push(prev1 + prev2);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return sequence;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Calculate prime squared value
|
|
129
|
+
*/
|
|
130
|
+
static primeSquared(prime) {
|
|
131
|
+
return prime * prime;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Calculate discrete multiplication (VBM style)
|
|
135
|
+
*/
|
|
136
|
+
static discreteMultiplication(n) {
|
|
137
|
+
return SharedConstants_1.ConstantsUtils.digitalRoot(n * n);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Calculate electron harmonic shear identification
|
|
141
|
+
*/
|
|
142
|
+
static electronHarmonicShearIdentification(a, b) {
|
|
143
|
+
const product = a * b;
|
|
144
|
+
const digitalRoot = SharedConstants_1.ConstantsUtils.digitalRoot(product);
|
|
145
|
+
return digitalRoot * SharedConstants_1.VORTEX_CONSTANTS.GOLDEN_RATIO;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Calculate surface topology angle
|
|
149
|
+
*/
|
|
150
|
+
static surfaceTopologyAngle(degrees = 360) {
|
|
151
|
+
const radians = this.degreesToRadians(degrees);
|
|
152
|
+
return Math.sin(radians) * SharedConstants_1.VORTEX_CONSTANTS.GOLDEN_RATIO;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Generate vortex pattern
|
|
156
|
+
*/
|
|
157
|
+
static generateVortexPattern(complexity = 1.0) {
|
|
158
|
+
const pattern = [];
|
|
159
|
+
const steps = Math.floor(complexity * 100);
|
|
160
|
+
for (let i = 0; i < steps; i++) {
|
|
161
|
+
const angle = (i / steps) * SharedConstants_1.MATH_CONSTANTS.TWO_PI;
|
|
162
|
+
const sequenceIndex = Math.floor((angle / SharedConstants_1.MATH_CONSTANTS.TWO_PI) * 6) % 6;
|
|
163
|
+
const baseValue = SharedConstants_1.VORTEX_CONSTANTS.VORTEX_SEQUENCE[sequenceIndex] || 1;
|
|
164
|
+
const goldenModulation = Math.sin(angle * SharedConstants_1.VORTEX_CONSTANTS.GOLDEN_RATIO);
|
|
165
|
+
const patternValue = baseValue * (1 + goldenModulation * 0.1);
|
|
166
|
+
pattern.push(patternValue);
|
|
167
|
+
}
|
|
168
|
+
return pattern;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Calculate energy flow through vortex
|
|
172
|
+
*/
|
|
173
|
+
static calculateEnergyFlow(input, vortexEfficiency = 0.8) {
|
|
174
|
+
const vortexTransform = this.applyVortexTransform(input);
|
|
175
|
+
const energyOutput = vortexTransform * vortexEfficiency;
|
|
176
|
+
return energyOutput * SharedConstants_1.VORTEX_CONSTANTS.GOLDEN_RATIO;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Calculate resonance between two consciousness levels
|
|
180
|
+
*/
|
|
181
|
+
static calculateConsciousnessResonance(level1, level2, vortexStrength = 1.0) {
|
|
182
|
+
const normalized1 = SharedConstants_1.ConstantsUtils.normalize(level1, 0, 1);
|
|
183
|
+
const normalized2 = SharedConstants_1.ConstantsUtils.normalize(level2, 0, 1);
|
|
184
|
+
const frequency1 = normalized1 * SharedConstants_1.VORTEX_CONSTANTS.GOLDEN_RATIO;
|
|
185
|
+
const frequency2 = normalized2 * SharedConstants_1.VORTEX_CONSTANTS.GOLDEN_RATIO;
|
|
186
|
+
const beatFrequency = Math.abs(frequency1 - frequency2);
|
|
187
|
+
const resonance = Math.exp(-beatFrequency) * vortexStrength;
|
|
188
|
+
return SharedConstants_1.ConstantsUtils.normalize(resonance, 0, 1);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Calculate field density at a point
|
|
192
|
+
*/
|
|
193
|
+
static calculateFieldDensity(x, y, z, fieldStrength, fieldRadius, patternContributions = []) {
|
|
194
|
+
const distance = this.distance3D(0, 0, 0, x, y, z);
|
|
195
|
+
if (distance > fieldRadius) {
|
|
196
|
+
return 0;
|
|
197
|
+
}
|
|
198
|
+
let density = fieldStrength * (1 - distance / fieldRadius);
|
|
199
|
+
for (const contribution of patternContributions) {
|
|
200
|
+
density += contribution;
|
|
201
|
+
}
|
|
202
|
+
return Math.max(0, density);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Interpolate between two values
|
|
206
|
+
*/
|
|
207
|
+
static interpolate(value1, value2, factor) {
|
|
208
|
+
return value1 + (value2 - value1) * factor;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Clamp value to range
|
|
212
|
+
*/
|
|
213
|
+
static clamp(value, min, max) {
|
|
214
|
+
return Math.max(min, Math.min(max, value));
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Check if two numbers are approximately equal
|
|
218
|
+
*/
|
|
219
|
+
static approximatelyEqual(a, b, epsilon = SharedConstants_1.MATH_CONSTANTS.EPSILON) {
|
|
220
|
+
return Math.abs(a - b) < epsilon;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Calculate weighted average
|
|
224
|
+
*/
|
|
225
|
+
static weightedAverage(values, weights) {
|
|
226
|
+
if (values.length !== weights.length || values.length === 0) {
|
|
227
|
+
return 0;
|
|
228
|
+
}
|
|
229
|
+
let sum = 0;
|
|
230
|
+
let weightSum = 0;
|
|
231
|
+
for (let i = 0; i < values.length; i++) {
|
|
232
|
+
const value = values[i];
|
|
233
|
+
const weight = weights[i];
|
|
234
|
+
if (value !== undefined && weight !== undefined) {
|
|
235
|
+
sum += value * weight;
|
|
236
|
+
weightSum += weight;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return weightSum > 0 ? sum / weightSum : 0;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Calculate standard deviation
|
|
243
|
+
*/
|
|
244
|
+
static standardDeviation(values) {
|
|
245
|
+
if (values.length === 0)
|
|
246
|
+
return 0;
|
|
247
|
+
const mean = values.reduce((a, b) => a + b, 0) / values.length;
|
|
248
|
+
const variance = values.reduce((sum, value) => sum + Math.pow(value - mean, 2), 0) /
|
|
249
|
+
values.length;
|
|
250
|
+
return Math.sqrt(variance);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Generate random number in range
|
|
254
|
+
*/
|
|
255
|
+
static randomInRange(min, max) {
|
|
256
|
+
return Math.random() * (max - min) + min;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Generate random integer in range
|
|
260
|
+
*/
|
|
261
|
+
static randomIntInRange(min, max) {
|
|
262
|
+
return Math.floor(this.randomInRange(min, max + 1));
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Calculate factorial
|
|
266
|
+
*/
|
|
267
|
+
static factorial(n) {
|
|
268
|
+
if (n < 0)
|
|
269
|
+
return NaN;
|
|
270
|
+
if (n === 0 || n === 1)
|
|
271
|
+
return 1;
|
|
272
|
+
let result = 1;
|
|
273
|
+
for (let i = 2; i <= n; i++) {
|
|
274
|
+
result *= i;
|
|
275
|
+
}
|
|
276
|
+
return result;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Calculate combinations (n choose k)
|
|
280
|
+
*/
|
|
281
|
+
static combinations(n, k) {
|
|
282
|
+
if (k > n || k < 0)
|
|
283
|
+
return 0;
|
|
284
|
+
if (k === 0 || k === n)
|
|
285
|
+
return 1;
|
|
286
|
+
return this.factorial(n) / (this.factorial(k) * this.factorial(n - k));
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Calculate permutations (n permute k)
|
|
290
|
+
*/
|
|
291
|
+
static permutations(n, k) {
|
|
292
|
+
if (k > n || k < 0)
|
|
293
|
+
return 0;
|
|
294
|
+
return this.factorial(n) / this.factorial(n - k);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
exports.MathUtils = MathUtils;
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.NetworkNode = void 0;
|
|
7
|
+
const events_1 = require("events");
|
|
8
|
+
const ws_1 = __importDefault(require("ws"));
|
|
9
|
+
const uuid_1 = require("uuid");
|
|
10
|
+
class NetworkNode extends events_1.EventEmitter {
|
|
11
|
+
constructor(config) {
|
|
12
|
+
super();
|
|
13
|
+
this.connections = new Map();
|
|
14
|
+
this.isRunning = false;
|
|
15
|
+
this.config = config;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Start the network node
|
|
19
|
+
*/
|
|
20
|
+
async start() {
|
|
21
|
+
if (this.isRunning)
|
|
22
|
+
return;
|
|
23
|
+
try {
|
|
24
|
+
// Start WebSocket server
|
|
25
|
+
this.server = new ws_1.default.Server({ port: this.config.port });
|
|
26
|
+
this.server.on("connection", (ws, req) => {
|
|
27
|
+
this.handleIncomingConnection(ws, req);
|
|
28
|
+
});
|
|
29
|
+
this.server.on("error", (error) => {
|
|
30
|
+
this.emit("error", error);
|
|
31
|
+
});
|
|
32
|
+
// Start ping interval to keep connections alive
|
|
33
|
+
this.pingInterval = setInterval(() => {
|
|
34
|
+
this.pingConnections();
|
|
35
|
+
}, 30000); // 30 seconds
|
|
36
|
+
// Start discovery if enabled
|
|
37
|
+
if (this.config.discoveryEnabled) {
|
|
38
|
+
this.startDiscovery();
|
|
39
|
+
}
|
|
40
|
+
this.isRunning = true;
|
|
41
|
+
this.emit("started", { port: this.config.port });
|
|
42
|
+
console.log(`🌐 Network node started on port ${this.config.port}`);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error("Failed to start network node:", error);
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Stop the network node
|
|
51
|
+
*/
|
|
52
|
+
async stop() {
|
|
53
|
+
if (!this.isRunning)
|
|
54
|
+
return;
|
|
55
|
+
// Clear intervals
|
|
56
|
+
if (this.pingInterval) {
|
|
57
|
+
clearInterval(this.pingInterval);
|
|
58
|
+
}
|
|
59
|
+
if (this.discoveryInterval) {
|
|
60
|
+
clearInterval(this.discoveryInterval);
|
|
61
|
+
}
|
|
62
|
+
// Close all connections
|
|
63
|
+
for (const [, connection] of this.connections) {
|
|
64
|
+
connection.ws.close();
|
|
65
|
+
}
|
|
66
|
+
this.connections.clear();
|
|
67
|
+
// Close server
|
|
68
|
+
if (this.server) {
|
|
69
|
+
this.server.close();
|
|
70
|
+
}
|
|
71
|
+
this.isRunning = false;
|
|
72
|
+
this.emit("stopped");
|
|
73
|
+
console.log("🌐 Network node stopped");
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Connect to another ZeroPoint device
|
|
77
|
+
*/
|
|
78
|
+
async connect(address, deviceId, retries = 3) {
|
|
79
|
+
if (this.connections.size >= this.config.maxConnections) {
|
|
80
|
+
console.warn("Maximum connections reached");
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
for (let attempt = 1; attempt <= retries; attempt++) {
|
|
84
|
+
try {
|
|
85
|
+
const ws = new ws_1.default(`ws://${address}`);
|
|
86
|
+
return new Promise((resolve) => {
|
|
87
|
+
const timeout = setTimeout(() => {
|
|
88
|
+
ws.close();
|
|
89
|
+
resolve(false);
|
|
90
|
+
}, this.config.connectionTimeout || 5000);
|
|
91
|
+
ws.on("open", () => {
|
|
92
|
+
clearTimeout(timeout);
|
|
93
|
+
const connection = {
|
|
94
|
+
deviceId: deviceId || (0, uuid_1.v4)(),
|
|
95
|
+
instanceId: (0, uuid_1.v4)(),
|
|
96
|
+
ws,
|
|
97
|
+
address,
|
|
98
|
+
lastPing: Date.now(),
|
|
99
|
+
isAlive: true,
|
|
100
|
+
};
|
|
101
|
+
this.connections.set(connection.deviceId, connection);
|
|
102
|
+
this.setupConnectionHandlers(connection);
|
|
103
|
+
// Send handshake
|
|
104
|
+
this.sendToConnection(connection, {
|
|
105
|
+
type: "handshake",
|
|
106
|
+
deviceId: this.config.deviceId,
|
|
107
|
+
instanceId: this.config.instanceId,
|
|
108
|
+
timestamp: Date.now(),
|
|
109
|
+
});
|
|
110
|
+
this.emit("deviceConnected", {
|
|
111
|
+
deviceId: connection.deviceId,
|
|
112
|
+
address,
|
|
113
|
+
});
|
|
114
|
+
resolve(true);
|
|
115
|
+
});
|
|
116
|
+
ws.on("error", (error) => {
|
|
117
|
+
clearTimeout(timeout);
|
|
118
|
+
console.error(`Connection error to ${address} (attempt ${attempt}/${retries}):`, error);
|
|
119
|
+
if (attempt === retries) {
|
|
120
|
+
resolve(false);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
ws.on("close", () => {
|
|
124
|
+
clearTimeout(timeout);
|
|
125
|
+
if (deviceId) {
|
|
126
|
+
this.connections.delete(deviceId);
|
|
127
|
+
this.emit("deviceDisconnected", { deviceId });
|
|
128
|
+
}
|
|
129
|
+
if (attempt === retries) {
|
|
130
|
+
resolve(false);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
console.error(`Failed to connect to ${address} (attempt ${attempt}/${retries}):`, error);
|
|
137
|
+
if (attempt === retries) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
// Wait before retry
|
|
141
|
+
await new Promise((resolve) => setTimeout(resolve, 1000 * attempt));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Disconnect from a device
|
|
148
|
+
*/
|
|
149
|
+
async disconnect(deviceId) {
|
|
150
|
+
const connection = this.connections.get(deviceId);
|
|
151
|
+
if (connection) {
|
|
152
|
+
connection.ws.close();
|
|
153
|
+
this.connections.delete(deviceId);
|
|
154
|
+
this.emit("deviceDisconnected", { deviceId });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Broadcast message to all connected devices
|
|
159
|
+
*/
|
|
160
|
+
async broadcast(message, targetDevices) {
|
|
161
|
+
const devicesToSend = targetDevices
|
|
162
|
+
? targetDevices.filter((id) => this.connections.has(id))
|
|
163
|
+
: Array.from(this.connections.keys());
|
|
164
|
+
for (const deviceId of devicesToSend) {
|
|
165
|
+
const connection = this.connections.get(deviceId);
|
|
166
|
+
if (connection && connection.isAlive) {
|
|
167
|
+
this.sendToConnection(connection, message);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Send message to specific device
|
|
173
|
+
*/
|
|
174
|
+
sendToDevice(deviceId, message) {
|
|
175
|
+
const connection = this.connections.get(deviceId);
|
|
176
|
+
if (connection && connection.isAlive) {
|
|
177
|
+
this.sendToConnection(connection, message);
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get all active connections
|
|
184
|
+
*/
|
|
185
|
+
getConnections() {
|
|
186
|
+
return new Map(this.connections);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get connection count
|
|
190
|
+
*/
|
|
191
|
+
getConnectionCount() {
|
|
192
|
+
return this.connections.size;
|
|
193
|
+
}
|
|
194
|
+
handleIncomingConnection(ws, req) {
|
|
195
|
+
if (this.connections.size >= this.config.maxConnections) {
|
|
196
|
+
ws.close();
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
const connection = {
|
|
200
|
+
deviceId: (0, uuid_1.v4)(), // Will be updated after handshake
|
|
201
|
+
instanceId: (0, uuid_1.v4)(),
|
|
202
|
+
ws,
|
|
203
|
+
address: req.socket.remoteAddress,
|
|
204
|
+
lastPing: Date.now(),
|
|
205
|
+
isAlive: true,
|
|
206
|
+
};
|
|
207
|
+
this.setupConnectionHandlers(connection);
|
|
208
|
+
}
|
|
209
|
+
setupConnectionHandlers(connection) {
|
|
210
|
+
connection.ws.on("message", (data) => {
|
|
211
|
+
try {
|
|
212
|
+
const message = JSON.parse(data.toString());
|
|
213
|
+
this.handleMessage(connection, message);
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
console.error("Failed to parse message:", error);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
connection.ws.on("close", () => {
|
|
220
|
+
this.connections.delete(connection.deviceId);
|
|
221
|
+
this.emit("deviceDisconnected", { deviceId: connection.deviceId });
|
|
222
|
+
});
|
|
223
|
+
connection.ws.on("error", (error) => {
|
|
224
|
+
console.error(`Connection error for ${connection.deviceId}:`, error);
|
|
225
|
+
this.connections.delete(connection.deviceId);
|
|
226
|
+
this.emit("deviceDisconnected", { deviceId: connection.deviceId });
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
handleMessage(connection, message) {
|
|
230
|
+
switch (message.type) {
|
|
231
|
+
case "handshake":
|
|
232
|
+
connection.deviceId = message.deviceId;
|
|
233
|
+
connection.instanceId = message.instanceId;
|
|
234
|
+
this.connections.set(connection.deviceId, connection);
|
|
235
|
+
this.emit("deviceConnected", {
|
|
236
|
+
deviceId: connection.deviceId,
|
|
237
|
+
address: connection.address,
|
|
238
|
+
});
|
|
239
|
+
break;
|
|
240
|
+
case "ping":
|
|
241
|
+
connection.lastPing = Date.now();
|
|
242
|
+
connection.isAlive = true;
|
|
243
|
+
this.sendToConnection(connection, {
|
|
244
|
+
type: "pong",
|
|
245
|
+
timestamp: Date.now(),
|
|
246
|
+
});
|
|
247
|
+
break;
|
|
248
|
+
case "pong":
|
|
249
|
+
connection.lastPing = Date.now();
|
|
250
|
+
connection.isAlive = true;
|
|
251
|
+
break;
|
|
252
|
+
default:
|
|
253
|
+
this.emit("message", message);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
sendToConnection(connection, message) {
|
|
257
|
+
if (connection.ws.readyState === ws_1.default.OPEN) {
|
|
258
|
+
connection.ws.send(JSON.stringify(message));
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
pingConnections() {
|
|
262
|
+
const now = Date.now();
|
|
263
|
+
for (const [_deviceId, connection] of this.connections) {
|
|
264
|
+
if (now - connection.lastPing > 60000) {
|
|
265
|
+
// 60 seconds
|
|
266
|
+
connection.isAlive = false;
|
|
267
|
+
connection.ws.close();
|
|
268
|
+
this.connections.delete(_deviceId);
|
|
269
|
+
this.emit("deviceDisconnected", { deviceId: _deviceId });
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
this.sendToConnection(connection, { type: "ping", timestamp: now });
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
startDiscovery() {
|
|
277
|
+
// Simple discovery mechanism - can be enhanced with UDP multicast
|
|
278
|
+
this.discoveryInterval = setInterval(() => {
|
|
279
|
+
// Broadcast discovery message
|
|
280
|
+
this.broadcast({
|
|
281
|
+
type: "discovery",
|
|
282
|
+
deviceId: this.config.deviceId,
|
|
283
|
+
port: this.config.port,
|
|
284
|
+
timestamp: Date.now(),
|
|
285
|
+
});
|
|
286
|
+
}, 60000); // Every minute
|
|
287
|
+
}
|
|
288
|
+
processMessage() {
|
|
289
|
+
// Simple stub for test compatibility
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Check if connected to network
|
|
294
|
+
*/
|
|
295
|
+
isConnected() {
|
|
296
|
+
return this.connections.size > 0;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Broadcast a message to all connected devices
|
|
300
|
+
*/
|
|
301
|
+
broadcastMessage(message) {
|
|
302
|
+
const broadcastData = {
|
|
303
|
+
...message,
|
|
304
|
+
timestamp: Date.now(),
|
|
305
|
+
source: this.config.deviceId,
|
|
306
|
+
};
|
|
307
|
+
this.connections.forEach((device, deviceId) => {
|
|
308
|
+
try {
|
|
309
|
+
this.sendToConnection(device, broadcastData);
|
|
310
|
+
}
|
|
311
|
+
catch {
|
|
312
|
+
// Remove disconnected device
|
|
313
|
+
this.connections.delete(deviceId);
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Shutdown the network node and close all connections
|
|
319
|
+
*/
|
|
320
|
+
async shutdown() {
|
|
321
|
+
if (this.server) {
|
|
322
|
+
await new Promise((resolve) => {
|
|
323
|
+
this.server.close(() => resolve());
|
|
324
|
+
});
|
|
325
|
+
this.server = undefined;
|
|
326
|
+
}
|
|
327
|
+
// Close all device connections
|
|
328
|
+
this.connections.forEach((device) => {
|
|
329
|
+
try {
|
|
330
|
+
device.ws.close();
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
// Ignore errors when closing connections
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
this.connections.clear();
|
|
337
|
+
// Clear any timers or intervals if present
|
|
338
|
+
if (this.pingInterval) {
|
|
339
|
+
clearInterval(this.pingInterval);
|
|
340
|
+
this.pingInterval = undefined;
|
|
341
|
+
}
|
|
342
|
+
if (this.discoveryInterval) {
|
|
343
|
+
clearInterval(this.discoveryInterval);
|
|
344
|
+
this.discoveryInterval = undefined;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
exports.NetworkNode = NetworkNode;
|