feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI
Major improvements across the codebase:
- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)
Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings
Closes #2, #3, #9, #13, #14, #18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:37:20 +01:00
[
{
"id" : "e2e-flow-tab" ,
"type" : "tab" ,
"label" : "E2E Test Flow" ,
"disabled" : false ,
2026-03-11 16:38:14 +01:00
"info" : "End-to-end test flow that verifies EVOLV nodes load, accept input, and produce output."
feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI
Major improvements across the codebase:
- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)
Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings
Closes #2, #3, #9, #13, #14, #18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:37:20 +01:00
} ,
{
"id" : "inject-trigger" ,
"type" : "inject" ,
"z" : "e2e-flow-tab" ,
2026-03-11 16:38:14 +01:00
"name" : "Trigger once on start" ,
feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI
Major improvements across the codebase:
- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)
Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings
Closes #2, #3, #9, #13, #14, #18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:37:20 +01:00
"props" : [
2026-03-11 16:38:14 +01:00
{ "p" : "payload" } ,
{ "p" : "topic" , "vt" : "str" }
feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI
Major improvements across the codebase:
- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)
Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings
Closes #2, #3, #9, #13, #14, #18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:37:20 +01:00
] ,
"repeat" : "" ,
"crontab" : "" ,
"once" : true ,
2026-03-11 16:38:14 +01:00
"onceDelay" : "3" ,
feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI
Major improvements across the codebase:
- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)
Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings
Closes #2, #3, #9, #13, #14, #18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:37:20 +01:00
"topic" : "e2e-test" ,
"payload" : "" ,
"payloadType" : "date" ,
2026-03-11 16:38:14 +01:00
"x" : 160 ,
"y" : 80 ,
"wires" : [ [ "build-measurement-msg" ] ]
feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI
Major improvements across the codebase:
- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)
Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings
Closes #2, #3, #9, #13, #14, #18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:37:20 +01:00
} ,
{
2026-03-11 16:38:14 +01:00
"id" : "build-measurement-msg" ,
feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI
Major improvements across the codebase:
- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)
Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings
Closes #2, #3, #9, #13, #14, #18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:37:20 +01:00
"type" : "function" ,
"z" : "e2e-flow-tab" ,
2026-03-11 16:38:14 +01:00
"name" : "Build measurement input" ,
"func" : "// Simulate an analog sensor reading sent to the measurement node.\n// The measurement node expects a numeric payload on topic 'analogInput'.\nmsg.payload = 4.2 + Math.random() * 15.8; // 4-20 mA range\nmsg.topic = 'analogInput';\nnode.status({ fill: 'green', shape: 'dot', text: 'sent ' + msg.payload.toFixed(2) });\nreturn msg;" ,
feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI
Major improvements across the codebase:
- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)
Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings
Closes #2, #3, #9, #13, #14, #18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:37:20 +01:00
"outputs" : 1 ,
"timeout" : "" ,
"noerr" : 0 ,
"initialize" : "" ,
"finalize" : "" ,
"libs" : [ ] ,
2026-03-11 16:38:14 +01:00
"x" : 380 ,
"y" : 80 ,
"wires" : [ [ "evolv-measurement" ] ]
} ,
{
"id" : "evolv-measurement" ,
"type" : "measurement" ,
"z" : "e2e-flow-tab" ,
"name" : "E2E-Level-Sensor" ,
"scaling" : true ,
"i_min" : 4 ,
"i_max" : 20 ,
"i_offset" : 0 ,
"o_min" : 0 ,
"o_max" : 5 ,
"simulator" : false ,
"smooth_method" : "" ,
"count" : "10" ,
"uuid" : "" ,
"supplier" : "e2e-test" ,
"category" : "level" ,
"assetType" : "sensor" ,
"model" : "e2e-virtual" ,
"unit" : "m" ,
"enableLog" : false ,
"logLevel" : "error" ,
"positionVsParent" : "upstream" ,
"positionIcon" : "" ,
"hasDistance" : false ,
"distance" : 0 ,
"distanceUnit" : "m" ,
"distanceDescription" : "" ,
"x" : 600 ,
"y" : 80 ,
feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI
Major improvements across the codebase:
- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)
Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings
Closes #2, #3, #9, #13, #14, #18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:37:20 +01:00
"wires" : [
2026-03-11 16:38:14 +01:00
[ "debug-process" ] ,
[ "debug-dbase" ] ,
[ "debug-parent" ]
feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI
Major improvements across the codebase:
- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)
Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings
Closes #2, #3, #9, #13, #14, #18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:37:20 +01:00
]
} ,
{
2026-03-11 16:38:14 +01:00
"id" : "debug-process" ,
"type" : "debug" ,
"z" : "e2e-flow-tab" ,
"name" : "Process Output" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : true ,
"complete" : "true" ,
"targetType" : "full" ,
"statusVal" : "" ,
"statusType" : "auto" ,
"x" : 830 ,
"y" : 40 ,
"wires" : [ ]
} ,
{
"id" : "debug-dbase" ,
"type" : "debug" ,
"z" : "e2e-flow-tab" ,
"name" : "Database Output" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : true ,
"complete" : "true" ,
"targetType" : "full" ,
"statusVal" : "" ,
"statusType" : "auto" ,
"x" : 840 ,
"y" : 80 ,
"wires" : [ ]
} ,
{
"id" : "debug-parent" ,
feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI
Major improvements across the codebase:
- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)
Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings
Closes #2, #3, #9, #13, #14, #18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:37:20 +01:00
"type" : "debug" ,
"z" : "e2e-flow-tab" ,
2026-03-11 16:38:14 +01:00
"name" : "Parent Output" ,
feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI
Major improvements across the codebase:
- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)
Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings
Closes #2, #3, #9, #13, #14, #18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:37:20 +01:00
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : true ,
"complete" : "true" ,
"targetType" : "full" ,
"statusVal" : "" ,
"statusType" : "auto" ,
2026-03-11 16:38:14 +01:00
"x" : 830 ,
"y" : 120 ,
"wires" : [ ]
} ,
{
"id" : "inject-periodic" ,
"type" : "inject" ,
"z" : "e2e-flow-tab" ,
"name" : "Periodic (5s)" ,
"props" : [
{ "p" : "payload" } ,
{ "p" : "topic" , "vt" : "str" }
] ,
"repeat" : "5" ,
"crontab" : "" ,
"once" : true ,
"onceDelay" : "6" ,
"topic" : "e2e-heartbeat" ,
"payload" : "" ,
"payloadType" : "date" ,
"x" : 160 ,
"y" : 200 ,
"wires" : [ [ "heartbeat-func" ] ]
} ,
{
"id" : "heartbeat-func" ,
"type" : "function" ,
"z" : "e2e-flow-tab" ,
"name" : "Heartbeat check" ,
"func" : "// Verify the EVOLV measurement node is running by querying its presence\nmsg.payload = {\n check: 'heartbeat',\n timestamp: Date.now(),\n nodeCount: global.get('_e2e_msg_count') || 0\n};\n// Increment message counter\nlet count = global.get('_e2e_msg_count') || 0;\nglobal.set('_e2e_msg_count', count + 1);\nnode.status({ fill: 'blue', shape: 'ring', text: 'beat #' + (count+1) });\nreturn msg;" ,
"outputs" : 1 ,
"timeout" : "" ,
"noerr" : 0 ,
"initialize" : "" ,
"finalize" : "" ,
"libs" : [ ] ,
"x" : 380 ,
"y" : 200 ,
"wires" : [ [ "debug-heartbeat" ] ]
} ,
{
"id" : "debug-heartbeat" ,
"type" : "debug" ,
"z" : "e2e-flow-tab" ,
"name" : "Heartbeat Debug" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"statusVal" : "" ,
"statusType" : "auto" ,
"x" : 600 ,
"y" : 200 ,
feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI
Major improvements across the codebase:
- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)
Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings
Closes #2, #3, #9, #13, #14, #18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:37:20 +01:00
"wires" : [ ]
}
]