2025-05-27 15:10:55 +02:00
{
"name" : "EVOLV" ,
2026-05-28 09:15:30 +02:00
"version" : "1.0.32" ,
2025-05-27 15:10:55 +02:00
"lockfileVersion" : 3 ,
"requires" : true ,
"packages" : {
"" : {
"name" : "EVOLV" ,
2026-05-28 09:15:30 +02:00
"version" : "1.0.32" ,
2025-05-27 15:10:55 +02:00
"license" : "SEE LICENSE" ,
"dependencies" : {
2026-05-28 09:15:30 +02:00
"@flowfuse/node-red-dashboard" : "^1.30.2" ,
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
"generalFunctions" : "file:nodes/generalFunctions" ,
2025-05-27 15:10:55 +02:00
"mathjs" : "^13.2.0"
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
} ,
"devDependencies" : {
"@eslint/js" : "^8.57.0" ,
"eslint" : "^8.57.0" ,
"globals" : "^15.0.0" ,
"jest" : "^29.7.0"
}
} ,
"node_modules/@babel/code-frame" : {
"version" : "7.29.0" ,
"resolved" : "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz" ,
"integrity" : "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-validator-identifier" : "^7.28.5" ,
"js-tokens" : "^4.0.0" ,
"picocolors" : "^1.1.1"
} ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/compat-data" : {
"version" : "7.29.0" ,
"resolved" : "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz" ,
"integrity" : "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==" ,
"dev" : true ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/core" : {
"version" : "7.29.0" ,
"resolved" : "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz" ,
"integrity" : "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==" ,
"dev" : true ,
"dependencies" : {
"@babel/code-frame" : "^7.29.0" ,
"@babel/generator" : "^7.29.0" ,
"@babel/helper-compilation-targets" : "^7.28.6" ,
"@babel/helper-module-transforms" : "^7.28.6" ,
"@babel/helpers" : "^7.28.6" ,
"@babel/parser" : "^7.29.0" ,
"@babel/template" : "^7.28.6" ,
"@babel/traverse" : "^7.29.0" ,
"@babel/types" : "^7.29.0" ,
"@jridgewell/remapping" : "^2.3.5" ,
"convert-source-map" : "^2.0.0" ,
"debug" : "^4.1.0" ,
"gensync" : "^1.0.0-beta.2" ,
"json5" : "^2.2.3" ,
"semver" : "^6.3.1"
} ,
"engines" : {
"node" : ">=6.9.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/babel"
}
} ,
"node_modules/@babel/generator" : {
"version" : "7.29.1" ,
"resolved" : "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz" ,
"integrity" : "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==" ,
"dev" : true ,
"dependencies" : {
"@babel/parser" : "^7.29.0" ,
"@babel/types" : "^7.29.0" ,
"@jridgewell/gen-mapping" : "^0.3.12" ,
"@jridgewell/trace-mapping" : "^0.3.28" ,
"jsesc" : "^3.0.2"
} ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/helper-compilation-targets" : {
"version" : "7.28.6" ,
"resolved" : "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz" ,
"integrity" : "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==" ,
"dev" : true ,
"dependencies" : {
"@babel/compat-data" : "^7.28.6" ,
"@babel/helper-validator-option" : "^7.27.1" ,
"browserslist" : "^4.24.0" ,
"lru-cache" : "^5.1.1" ,
"semver" : "^6.3.1"
} ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/helper-globals" : {
"version" : "7.28.0" ,
"resolved" : "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz" ,
"integrity" : "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==" ,
"dev" : true ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/helper-module-imports" : {
"version" : "7.28.6" ,
"resolved" : "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz" ,
"integrity" : "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==" ,
"dev" : true ,
"dependencies" : {
"@babel/traverse" : "^7.28.6" ,
"@babel/types" : "^7.28.6"
} ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/helper-module-transforms" : {
"version" : "7.28.6" ,
"resolved" : "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz" ,
"integrity" : "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-module-imports" : "^7.28.6" ,
"@babel/helper-validator-identifier" : "^7.28.5" ,
"@babel/traverse" : "^7.28.6"
} ,
"engines" : {
"node" : ">=6.9.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0"
}
} ,
"node_modules/@babel/helper-plugin-utils" : {
"version" : "7.28.6" ,
"resolved" : "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz" ,
"integrity" : "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==" ,
"dev" : true ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/helper-string-parser" : {
"version" : "7.27.1" ,
"resolved" : "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" ,
"integrity" : "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==" ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/helper-validator-identifier" : {
"version" : "7.28.5" ,
"resolved" : "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz" ,
"integrity" : "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==" ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/helper-validator-option" : {
"version" : "7.27.1" ,
"resolved" : "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz" ,
"integrity" : "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==" ,
"dev" : true ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/helpers" : {
"version" : "7.28.6" ,
"resolved" : "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz" ,
"integrity" : "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==" ,
"dev" : true ,
"dependencies" : {
"@babel/template" : "^7.28.6" ,
"@babel/types" : "^7.28.6"
} ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/parser" : {
2026-05-28 09:15:30 +02:00
"version" : "7.29.3" ,
"resolved" : "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz" ,
"integrity" : "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==" ,
"license" : "MIT" ,
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
"dependencies" : {
"@babel/types" : "^7.29.0"
} ,
"bin" : {
"parser" : "bin/babel-parser.js"
} ,
"engines" : {
"node" : ">=6.0.0"
}
} ,
"node_modules/@babel/plugin-syntax-async-generators" : {
"version" : "7.8.4" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" ,
"integrity" : "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.8.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-bigint" : {
"version" : "7.8.3" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" ,
"integrity" : "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.8.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-class-properties" : {
"version" : "7.12.13" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" ,
"integrity" : "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.12.13"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-class-static-block" : {
"version" : "7.14.5" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" ,
"integrity" : "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.14.5"
} ,
"engines" : {
"node" : ">=6.9.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-import-attributes" : {
"version" : "7.28.6" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz" ,
"integrity" : "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.28.6"
} ,
"engines" : {
"node" : ">=6.9.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-import-meta" : {
"version" : "7.10.4" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" ,
"integrity" : "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.10.4"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-json-strings" : {
"version" : "7.8.3" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" ,
"integrity" : "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.8.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-jsx" : {
"version" : "7.28.6" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz" ,
"integrity" : "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.28.6"
} ,
"engines" : {
"node" : ">=6.9.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-logical-assignment-operators" : {
"version" : "7.10.4" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" ,
"integrity" : "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.10.4"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-nullish-coalescing-operator" : {
"version" : "7.8.3" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" ,
"integrity" : "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.8.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-numeric-separator" : {
"version" : "7.10.4" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" ,
"integrity" : "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.10.4"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-object-rest-spread" : {
"version" : "7.8.3" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" ,
"integrity" : "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.8.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-optional-catch-binding" : {
"version" : "7.8.3" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" ,
"integrity" : "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.8.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-optional-chaining" : {
"version" : "7.8.3" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" ,
"integrity" : "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.8.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-private-property-in-object" : {
"version" : "7.14.5" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" ,
"integrity" : "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.14.5"
} ,
"engines" : {
"node" : ">=6.9.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-top-level-await" : {
"version" : "7.14.5" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" ,
"integrity" : "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.14.5"
} ,
"engines" : {
"node" : ">=6.9.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/plugin-syntax-typescript" : {
"version" : "7.28.6" ,
"resolved" : "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz" ,
"integrity" : "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.28.6"
} ,
"engines" : {
"node" : ">=6.9.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0-0"
}
} ,
"node_modules/@babel/runtime" : {
"version" : "7.28.4" ,
"resolved" : "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz" ,
"integrity" : "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/template" : {
"version" : "7.28.6" ,
"resolved" : "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz" ,
"integrity" : "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==" ,
"dev" : true ,
"dependencies" : {
"@babel/code-frame" : "^7.28.6" ,
"@babel/parser" : "^7.28.6" ,
"@babel/types" : "^7.28.6"
} ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/traverse" : {
"version" : "7.29.0" ,
"resolved" : "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz" ,
"integrity" : "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==" ,
"dev" : true ,
"dependencies" : {
"@babel/code-frame" : "^7.29.0" ,
"@babel/generator" : "^7.29.0" ,
"@babel/helper-globals" : "^7.28.0" ,
"@babel/parser" : "^7.29.0" ,
"@babel/template" : "^7.28.6" ,
"@babel/types" : "^7.29.0" ,
"debug" : "^4.3.1"
} ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/types" : {
"version" : "7.29.0" ,
"resolved" : "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz" ,
"integrity" : "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==" ,
"dependencies" : {
"@babel/helper-string-parser" : "^7.27.1" ,
"@babel/helper-validator-identifier" : "^7.28.5"
} ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@bcoe/v8-coverage" : {
"version" : "0.2.3" ,
"resolved" : "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" ,
"integrity" : "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" ,
"dev" : true
} ,
"node_modules/@eslint-community/eslint-utils" : {
"version" : "4.9.1" ,
"resolved" : "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz" ,
"integrity" : "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==" ,
"dev" : true ,
"dependencies" : {
"eslint-visitor-keys" : "^3.4.3"
} ,
"engines" : {
"node" : "^12.22.0 || ^14.17.0 || >=16.0.0"
} ,
"funding" : {
"url" : "https://opencollective.com/eslint"
} ,
"peerDependencies" : {
"eslint" : "^6.0.0 || ^7.0.0 || >=8.0.0"
}
} ,
"node_modules/@eslint-community/regexpp" : {
"version" : "4.12.2" ,
"resolved" : "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz" ,
"integrity" : "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==" ,
"dev" : true ,
"engines" : {
"node" : "^12.0.0 || ^14.0.0 || >=16.0.0"
}
} ,
"node_modules/@eslint/eslintrc" : {
"version" : "2.1.4" ,
"resolved" : "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" ,
"integrity" : "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==" ,
"dev" : true ,
"dependencies" : {
"ajv" : "^6.12.4" ,
"debug" : "^4.3.2" ,
"espree" : "^9.6.0" ,
"globals" : "^13.19.0" ,
"ignore" : "^5.2.0" ,
"import-fresh" : "^3.2.1" ,
"js-yaml" : "^4.1.0" ,
"minimatch" : "^3.1.2" ,
"strip-json-comments" : "^3.1.1"
} ,
"engines" : {
"node" : "^12.22.0 || ^14.17.0 || >=16.0.0"
} ,
"funding" : {
"url" : "https://opencollective.com/eslint"
}
} ,
"node_modules/@eslint/eslintrc/node_modules/globals" : {
"version" : "13.24.0" ,
"resolved" : "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" ,
"integrity" : "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==" ,
"dev" : true ,
"dependencies" : {
"type-fest" : "^0.20.2"
} ,
"engines" : {
"node" : ">=8"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/@eslint/eslintrc/node_modules/type-fest" : {
"version" : "0.20.2" ,
"resolved" : "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" ,
"integrity" : "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" ,
"dev" : true ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/@eslint/js" : {
"version" : "8.57.1" ,
"resolved" : "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz" ,
"integrity" : "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==" ,
"dev" : true ,
"engines" : {
"node" : "^12.22.0 || ^14.17.0 || >=16.0.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/@flowfuse/node-red-dashboard" : {
"version" : "1.30.2" ,
"resolved" : "https://registry.npmjs.org/@flowfuse/node-red-dashboard/-/node-red-dashboard-1.30.2.tgz" ,
"integrity" : "sha512-BnAo2MY4AZrRDrnCmNyXi6uN1VfEZIylQdQxw5C4FomYe6azWrqHr5BshgsnOdvp401wu4+uV8gXMzprdlh22w==" ,
"license" : "Apache-2.0" ,
"dependencies" : {
"acorn" : "^8.15.0" ,
"axios" : "^1.13.2" ,
"core-js" : "^3.47.0" ,
"d3" : "^7.9.0" ,
"echarts" : "^6.0.0" ,
"escodegen" : "^2.1.0" ,
"express" : "^4.22.1" ,
"lodash.merge" : "^4.6.2" ,
"socket.io" : "^4.8.1" ,
"vue" : "^3.5.25"
} ,
"engines" : {
"node" : ">=14"
}
} ,
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
"node_modules/@humanwhocodes/config-array" : {
"version" : "0.13.0" ,
"resolved" : "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz" ,
"integrity" : "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==" ,
"deprecated" : "Use @eslint/config-array instead" ,
"dev" : true ,
"dependencies" : {
"@humanwhocodes/object-schema" : "^2.0.3" ,
"debug" : "^4.3.1" ,
"minimatch" : "^3.0.5"
} ,
"engines" : {
"node" : ">=10.10.0"
}
} ,
"node_modules/@humanwhocodes/module-importer" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" ,
"integrity" : "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" ,
"dev" : true ,
"engines" : {
"node" : ">=12.22"
} ,
"funding" : {
"type" : "github" ,
"url" : "https://github.com/sponsors/nzakas"
}
} ,
"node_modules/@humanwhocodes/object-schema" : {
"version" : "2.0.3" ,
"resolved" : "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz" ,
"integrity" : "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==" ,
"deprecated" : "Use @eslint/object-schema instead" ,
"dev" : true
} ,
"node_modules/@istanbuljs/load-nyc-config" : {
"version" : "1.1.0" ,
"resolved" : "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" ,
"integrity" : "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" ,
"dev" : true ,
"dependencies" : {
"camelcase" : "^5.3.1" ,
"find-up" : "^4.1.0" ,
"get-package-type" : "^0.1.0" ,
"js-yaml" : "^3.13.1" ,
"resolve-from" : "^5.0.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/@istanbuljs/load-nyc-config/node_modules/argparse" : {
"version" : "1.0.10" ,
"resolved" : "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" ,
"integrity" : "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" ,
"dev" : true ,
"dependencies" : {
"sprintf-js" : "~1.0.2"
}
} ,
"node_modules/@istanbuljs/load-nyc-config/node_modules/find-up" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" ,
"integrity" : "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" ,
"dev" : true ,
"dependencies" : {
"locate-path" : "^5.0.0" ,
"path-exists" : "^4.0.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml" : {
"version" : "3.14.2" ,
"resolved" : "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz" ,
"integrity" : "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==" ,
"dev" : true ,
"dependencies" : {
"argparse" : "^1.0.7" ,
"esprima" : "^4.0.0"
} ,
"bin" : {
"js-yaml" : "bin/js-yaml.js"
}
} ,
"node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path" : {
"version" : "5.0.0" ,
"resolved" : "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" ,
"integrity" : "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" ,
"dev" : true ,
"dependencies" : {
"p-locate" : "^4.1.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit" : {
"version" : "2.3.0" ,
"resolved" : "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" ,
"integrity" : "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" ,
"dev" : true ,
"dependencies" : {
"p-try" : "^2.0.0"
} ,
"engines" : {
"node" : ">=6"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" ,
"integrity" : "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" ,
"dev" : true ,
"dependencies" : {
"p-limit" : "^2.2.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from" : {
"version" : "5.0.0" ,
"resolved" : "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" ,
"integrity" : "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/@istanbuljs/schema" : {
"version" : "0.1.3" ,
"resolved" : "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" ,
"integrity" : "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/@jest/console" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz" ,
"integrity" : "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==" ,
"dev" : true ,
"dependencies" : {
"@jest/types" : "^29.6.3" ,
"@types/node" : "*" ,
"chalk" : "^4.0.0" ,
"jest-message-util" : "^29.7.0" ,
"jest-util" : "^29.7.0" ,
"slash" : "^3.0.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/@jest/core" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz" ,
"integrity" : "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==" ,
"dev" : true ,
"dependencies" : {
"@jest/console" : "^29.7.0" ,
"@jest/reporters" : "^29.7.0" ,
"@jest/test-result" : "^29.7.0" ,
"@jest/transform" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"@types/node" : "*" ,
"ansi-escapes" : "^4.2.1" ,
"chalk" : "^4.0.0" ,
"ci-info" : "^3.2.0" ,
"exit" : "^0.1.2" ,
"graceful-fs" : "^4.2.9" ,
"jest-changed-files" : "^29.7.0" ,
"jest-config" : "^29.7.0" ,
"jest-haste-map" : "^29.7.0" ,
"jest-message-util" : "^29.7.0" ,
"jest-regex-util" : "^29.6.3" ,
"jest-resolve" : "^29.7.0" ,
"jest-resolve-dependencies" : "^29.7.0" ,
"jest-runner" : "^29.7.0" ,
"jest-runtime" : "^29.7.0" ,
"jest-snapshot" : "^29.7.0" ,
"jest-util" : "^29.7.0" ,
"jest-validate" : "^29.7.0" ,
"jest-watcher" : "^29.7.0" ,
"micromatch" : "^4.0.4" ,
"pretty-format" : "^29.7.0" ,
"slash" : "^3.0.0" ,
"strip-ansi" : "^6.0.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
} ,
"peerDependencies" : {
"node-notifier" : "^8.0.1 || ^9.0.0 || ^10.0.0"
} ,
"peerDependenciesMeta" : {
"node-notifier" : {
"optional" : true
}
}
} ,
"node_modules/@jest/environment" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" ,
"integrity" : "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==" ,
"dev" : true ,
"dependencies" : {
"@jest/fake-timers" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"@types/node" : "*" ,
"jest-mock" : "^29.7.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/@jest/expect" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" ,
"integrity" : "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==" ,
"dev" : true ,
"dependencies" : {
"expect" : "^29.7.0" ,
"jest-snapshot" : "^29.7.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/@jest/expect-utils" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" ,
"integrity" : "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==" ,
"dev" : true ,
"dependencies" : {
"jest-get-type" : "^29.6.3"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/@jest/fake-timers" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" ,
"integrity" : "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==" ,
"dev" : true ,
"dependencies" : {
"@jest/types" : "^29.6.3" ,
"@sinonjs/fake-timers" : "^10.0.2" ,
"@types/node" : "*" ,
"jest-message-util" : "^29.7.0" ,
"jest-mock" : "^29.7.0" ,
"jest-util" : "^29.7.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/@jest/globals" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" ,
"integrity" : "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==" ,
"dev" : true ,
"dependencies" : {
"@jest/environment" : "^29.7.0" ,
"@jest/expect" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"jest-mock" : "^29.7.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/@jest/reporters" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz" ,
"integrity" : "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==" ,
"dev" : true ,
"dependencies" : {
"@bcoe/v8-coverage" : "^0.2.3" ,
"@jest/console" : "^29.7.0" ,
"@jest/test-result" : "^29.7.0" ,
"@jest/transform" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"@jridgewell/trace-mapping" : "^0.3.18" ,
"@types/node" : "*" ,
"chalk" : "^4.0.0" ,
"collect-v8-coverage" : "^1.0.0" ,
"exit" : "^0.1.2" ,
"glob" : "^7.1.3" ,
"graceful-fs" : "^4.2.9" ,
"istanbul-lib-coverage" : "^3.0.0" ,
"istanbul-lib-instrument" : "^6.0.0" ,
"istanbul-lib-report" : "^3.0.0" ,
"istanbul-lib-source-maps" : "^4.0.0" ,
"istanbul-reports" : "^3.1.3" ,
"jest-message-util" : "^29.7.0" ,
"jest-util" : "^29.7.0" ,
"jest-worker" : "^29.7.0" ,
"slash" : "^3.0.0" ,
"string-length" : "^4.0.1" ,
"strip-ansi" : "^6.0.0" ,
"v8-to-istanbul" : "^9.0.1"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
} ,
"peerDependencies" : {
"node-notifier" : "^8.0.1 || ^9.0.0 || ^10.0.0"
} ,
"peerDependenciesMeta" : {
"node-notifier" : {
"optional" : true
}
}
} ,
"node_modules/@jest/schemas" : {
"version" : "29.6.3" ,
"resolved" : "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" ,
"integrity" : "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==" ,
"dev" : true ,
"dependencies" : {
"@sinclair/typebox" : "^0.27.8"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/@jest/source-map" : {
"version" : "29.6.3" ,
"resolved" : "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" ,
"integrity" : "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==" ,
"dev" : true ,
"dependencies" : {
"@jridgewell/trace-mapping" : "^0.3.18" ,
"callsites" : "^3.0.0" ,
"graceful-fs" : "^4.2.9"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/@jest/test-result" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz" ,
"integrity" : "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==" ,
"dev" : true ,
"dependencies" : {
"@jest/console" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"@types/istanbul-lib-coverage" : "^2.0.0" ,
"collect-v8-coverage" : "^1.0.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/@jest/test-sequencer" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz" ,
"integrity" : "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==" ,
"dev" : true ,
"dependencies" : {
"@jest/test-result" : "^29.7.0" ,
"graceful-fs" : "^4.2.9" ,
"jest-haste-map" : "^29.7.0" ,
"slash" : "^3.0.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/@jest/transform" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" ,
"integrity" : "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==" ,
"dev" : true ,
"dependencies" : {
"@babel/core" : "^7.11.6" ,
"@jest/types" : "^29.6.3" ,
"@jridgewell/trace-mapping" : "^0.3.18" ,
"babel-plugin-istanbul" : "^6.1.1" ,
"chalk" : "^4.0.0" ,
"convert-source-map" : "^2.0.0" ,
"fast-json-stable-stringify" : "^2.1.0" ,
"graceful-fs" : "^4.2.9" ,
"jest-haste-map" : "^29.7.0" ,
"jest-regex-util" : "^29.6.3" ,
"jest-util" : "^29.7.0" ,
"micromatch" : "^4.0.4" ,
"pirates" : "^4.0.4" ,
"slash" : "^3.0.0" ,
"write-file-atomic" : "^4.0.2"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/@jest/types" : {
"version" : "29.6.3" ,
"resolved" : "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" ,
"integrity" : "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==" ,
"dev" : true ,
"dependencies" : {
"@jest/schemas" : "^29.6.3" ,
"@types/istanbul-lib-coverage" : "^2.0.0" ,
"@types/istanbul-reports" : "^3.0.0" ,
"@types/node" : "*" ,
"@types/yargs" : "^17.0.8" ,
"chalk" : "^4.0.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/@jridgewell/gen-mapping" : {
"version" : "0.3.13" ,
"resolved" : "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz" ,
"integrity" : "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==" ,
"dev" : true ,
"dependencies" : {
"@jridgewell/sourcemap-codec" : "^1.5.0" ,
"@jridgewell/trace-mapping" : "^0.3.24"
}
} ,
"node_modules/@jridgewell/remapping" : {
"version" : "2.3.5" ,
"resolved" : "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz" ,
"integrity" : "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==" ,
"dev" : true ,
"dependencies" : {
"@jridgewell/gen-mapping" : "^0.3.5" ,
"@jridgewell/trace-mapping" : "^0.3.24"
}
} ,
"node_modules/@jridgewell/resolve-uri" : {
"version" : "3.1.2" ,
"resolved" : "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" ,
"integrity" : "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" ,
"dev" : true ,
"engines" : {
"node" : ">=6.0.0"
}
} ,
"node_modules/@jridgewell/sourcemap-codec" : {
"version" : "1.5.5" ,
"resolved" : "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz" ,
2026-05-28 09:15:30 +02:00
"integrity" : "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="
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
} ,
"node_modules/@jridgewell/trace-mapping" : {
"version" : "0.3.31" ,
"resolved" : "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz" ,
"integrity" : "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==" ,
"dev" : true ,
"dependencies" : {
"@jridgewell/resolve-uri" : "^3.1.0" ,
"@jridgewell/sourcemap-codec" : "^1.4.14"
}
} ,
"node_modules/@nodelib/fs.scandir" : {
"version" : "2.1.5" ,
"resolved" : "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" ,
"integrity" : "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" ,
"dev" : true ,
"dependencies" : {
"@nodelib/fs.stat" : "2.0.5" ,
"run-parallel" : "^1.1.9"
} ,
"engines" : {
"node" : ">= 8"
}
} ,
"node_modules/@nodelib/fs.stat" : {
"version" : "2.0.5" ,
"resolved" : "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" ,
"integrity" : "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" ,
"dev" : true ,
"engines" : {
"node" : ">= 8"
}
} ,
"node_modules/@nodelib/fs.walk" : {
"version" : "1.2.8" ,
"resolved" : "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" ,
"integrity" : "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" ,
"dev" : true ,
"dependencies" : {
"@nodelib/fs.scandir" : "2.1.5" ,
"fastq" : "^1.6.0"
} ,
"engines" : {
"node" : ">= 8"
}
} ,
"node_modules/@sinclair/typebox" : {
"version" : "0.27.10" ,
"resolved" : "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz" ,
"integrity" : "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==" ,
"dev" : true
} ,
"node_modules/@sinonjs/commons" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" ,
"integrity" : "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==" ,
"dev" : true ,
"dependencies" : {
"type-detect" : "4.0.8"
}
} ,
"node_modules/@sinonjs/fake-timers" : {
"version" : "10.3.0" ,
"resolved" : "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" ,
"integrity" : "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==" ,
"dev" : true ,
"dependencies" : {
"@sinonjs/commons" : "^3.0.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/@socket.io/component-emitter" : {
"version" : "3.1.2" ,
"resolved" : "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz" ,
"integrity" : "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" ,
"license" : "MIT"
} ,
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
"node_modules/@types/babel__core" : {
"version" : "7.20.5" ,
"resolved" : "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" ,
"integrity" : "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==" ,
"dev" : true ,
"dependencies" : {
"@babel/parser" : "^7.20.7" ,
"@babel/types" : "^7.20.7" ,
"@types/babel__generator" : "*" ,
"@types/babel__template" : "*" ,
"@types/babel__traverse" : "*"
}
} ,
"node_modules/@types/babel__generator" : {
"version" : "7.27.0" ,
"resolved" : "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz" ,
"integrity" : "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==" ,
"dev" : true ,
"dependencies" : {
"@babel/types" : "^7.0.0"
}
} ,
"node_modules/@types/babel__template" : {
"version" : "7.4.4" ,
"resolved" : "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" ,
"integrity" : "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==" ,
"dev" : true ,
"dependencies" : {
"@babel/parser" : "^7.1.0" ,
"@babel/types" : "^7.0.0"
}
} ,
"node_modules/@types/babel__traverse" : {
"version" : "7.28.0" ,
"resolved" : "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz" ,
"integrity" : "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==" ,
"dev" : true ,
"dependencies" : {
"@babel/types" : "^7.28.2"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/@types/cors" : {
"version" : "2.8.19" ,
"resolved" : "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz" ,
"integrity" : "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==" ,
"license" : "MIT" ,
"dependencies" : {
"@types/node" : "*"
}
} ,
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
"node_modules/@types/graceful-fs" : {
"version" : "4.1.9" ,
"resolved" : "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz" ,
"integrity" : "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==" ,
"dev" : true ,
"dependencies" : {
"@types/node" : "*"
}
} ,
"node_modules/@types/istanbul-lib-coverage" : {
"version" : "2.0.6" ,
"resolved" : "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" ,
"integrity" : "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" ,
"dev" : true
} ,
"node_modules/@types/istanbul-lib-report" : {
"version" : "3.0.3" ,
"resolved" : "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" ,
"integrity" : "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==" ,
"dev" : true ,
"dependencies" : {
"@types/istanbul-lib-coverage" : "*"
}
} ,
"node_modules/@types/istanbul-reports" : {
"version" : "3.0.4" ,
"resolved" : "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" ,
"integrity" : "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==" ,
"dev" : true ,
"dependencies" : {
"@types/istanbul-lib-report" : "*"
}
} ,
"node_modules/@types/node" : {
"version" : "25.4.0" ,
"resolved" : "https://registry.npmjs.org/@types/node/-/node-25.4.0.tgz" ,
"integrity" : "sha512-9wLpoeWuBlcbBpOY3XmzSTG3oscB6xjBEEtn+pYXTfhyXhIxC5FsBer2KTopBlvKEiW9l13po9fq+SJY/5lkhw==" ,
"dependencies" : {
"undici-types" : "~7.18.0"
}
} ,
"node_modules/@types/stack-utils" : {
"version" : "2.0.3" ,
"resolved" : "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" ,
"integrity" : "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/@types/ws" : {
"version" : "8.18.1" ,
"resolved" : "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz" ,
"integrity" : "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==" ,
"license" : "MIT" ,
"dependencies" : {
"@types/node" : "*"
}
} ,
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
"node_modules/@types/yargs" : {
"version" : "17.0.35" ,
"resolved" : "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz" ,
"integrity" : "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==" ,
"dev" : true ,
"dependencies" : {
"@types/yargs-parser" : "*"
}
} ,
"node_modules/@types/yargs-parser" : {
"version" : "21.0.3" ,
"resolved" : "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" ,
"integrity" : "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" ,
"dev" : true
} ,
"node_modules/@ungap/structured-clone" : {
"version" : "1.3.0" ,
"resolved" : "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" ,
"integrity" : "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/@vue/compiler-core" : {
"version" : "3.5.34" ,
"resolved" : "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.34.tgz" ,
"integrity" : "sha512-s9cLyK5mLcvZ4Agva5QgRsQyLKvts9WbU9DB6NqiZkkGEdwmcEiylj5Jbwkp680drF/NNCV8OlAJSe+yMLxaJw==" ,
"license" : "MIT" ,
"dependencies" : {
"@babel/parser" : "^7.29.3" ,
"@vue/shared" : "3.5.34" ,
"entities" : "^7.0.1" ,
"estree-walker" : "^2.0.2" ,
"source-map-js" : "^1.2.1"
}
} ,
"node_modules/@vue/compiler-dom" : {
"version" : "3.5.34" ,
"resolved" : "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.34.tgz" ,
"integrity" : "sha512-EbF/T++k0e2MMZlJsBhzK8Sgwt0HcIPOhzn1CTB/lv6sQcyk+OWf8YeiLxZp3ro7MbbLcAfAJ6sEvjFWuNgUCw==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/compiler-core" : "3.5.34" ,
"@vue/shared" : "3.5.34"
}
} ,
"node_modules/@vue/compiler-sfc" : {
"version" : "3.5.34" ,
"resolved" : "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.34.tgz" ,
"integrity" : "sha512-D/ihr6uZeIt6r+pVZf46RWT1fAsLFMbUP7k8G1VkiiWexriED9GrX3echHd4Abbt17zjlfiFJ8z7a3BxZOPNjg==" ,
"license" : "MIT" ,
"dependencies" : {
"@babel/parser" : "^7.29.3" ,
"@vue/compiler-core" : "3.5.34" ,
"@vue/compiler-dom" : "3.5.34" ,
"@vue/compiler-ssr" : "3.5.34" ,
"@vue/shared" : "3.5.34" ,
"estree-walker" : "^2.0.2" ,
"magic-string" : "^0.30.21" ,
"postcss" : "^8.5.14" ,
"source-map-js" : "^1.2.1"
}
} ,
"node_modules/@vue/compiler-ssr" : {
"version" : "3.5.34" ,
"resolved" : "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.34.tgz" ,
"integrity" : "sha512-cDtTHKibkThKGHH1SP+WdccquNRYQDFH6rRjQCqT9G2ltFAfoR5pUftpab/z+aM5mW9HLLVQW7hfKKQe/1GBeQ==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/compiler-dom" : "3.5.34" ,
"@vue/shared" : "3.5.34"
}
} ,
"node_modules/@vue/reactivity" : {
"version" : "3.5.34" ,
"resolved" : "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.34.tgz" ,
"integrity" : "sha512-y9XDjCEuBp+98k+UL5dbYkh57AHU4o6cxZedOPXw3bmrZZYLQsVHguGurq7hVrPCSrQtrnz1f9dssyFr+dMXfQ==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/shared" : "3.5.34"
}
} ,
"node_modules/@vue/runtime-core" : {
"version" : "3.5.34" ,
"resolved" : "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.34.tgz" ,
"integrity" : "sha512-mKeBYvu8tcMSLhypAHBmriUFfWXKTCF/23Z4jiCoYK3UtWepkliViNLuR90V9XOyD62mUxs9p1jsrpK3CCGIzw==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/reactivity" : "3.5.34" ,
"@vue/shared" : "3.5.34"
}
} ,
"node_modules/@vue/runtime-dom" : {
"version" : "3.5.34" ,
"resolved" : "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.34.tgz" ,
"integrity" : "sha512-e8kZzERmCwUnBRVsgSQlAfrfU2rGoy0FFKPBXSlfEjc/O3KfA7QP0t1/2ZylrbchjmIKB4dPTd07A6WPr0eOrg==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/reactivity" : "3.5.34" ,
"@vue/runtime-core" : "3.5.34" ,
"@vue/shared" : "3.5.34" ,
"csstype" : "^3.2.3"
}
} ,
"node_modules/@vue/server-renderer" : {
"version" : "3.5.34" ,
"resolved" : "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.34.tgz" ,
"integrity" : "sha512-nHxmJoTrKsmrkbILRhkC9gY1G3moZbJTqCzDd7DOOzG5KH9oeJ0Unqrff5f9v0pW//jES05ZkJcNtfE8JjOIew==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/compiler-ssr" : "3.5.34" ,
"@vue/shared" : "3.5.34"
} ,
"peerDependencies" : {
"vue" : "3.5.34"
}
} ,
"node_modules/@vue/shared" : {
"version" : "3.5.34" ,
"resolved" : "https://registry.npmjs.org/@vue/shared/-/shared-3.5.34.tgz" ,
"integrity" : "sha512-24uqU4OIiX29ryC3MeWid/Xf2fa2EFRUVLb77nRhk+UrTVrh/XiGtFAFmJBAtBRbjwNdsPRP+jj/OL27Eg1NDA==" ,
"license" : "MIT"
} ,
"node_modules/accepts" : {
"version" : "1.3.8" ,
"resolved" : "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" ,
"integrity" : "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" ,
"license" : "MIT" ,
"dependencies" : {
"mime-types" : "~2.1.34" ,
"negotiator" : "0.6.3"
} ,
"engines" : {
"node" : ">= 0.6"
}
} ,
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
"node_modules/acorn" : {
"version" : "8.16.0" ,
"resolved" : "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz" ,
"integrity" : "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==" ,
"bin" : {
"acorn" : "bin/acorn"
} ,
"engines" : {
"node" : ">=0.4.0"
}
} ,
"node_modules/acorn-jsx" : {
"version" : "5.3.2" ,
"resolved" : "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" ,
"integrity" : "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" ,
"dev" : true ,
"peerDependencies" : {
"acorn" : "^6.0.0 || ^7.0.0 || ^8.0.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/agent-base" : {
"version" : "6.0.2" ,
"resolved" : "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" ,
"integrity" : "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" ,
"license" : "MIT" ,
"dependencies" : {
"debug" : "4"
} ,
"engines" : {
"node" : ">= 6.0.0"
}
} ,
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
"node_modules/ajv" : {
"version" : "6.14.0" ,
"resolved" : "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz" ,
"integrity" : "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==" ,
"dev" : true ,
"dependencies" : {
"fast-deep-equal" : "^3.1.1" ,
"fast-json-stable-stringify" : "^2.0.0" ,
"json-schema-traverse" : "^0.4.1" ,
"uri-js" : "^4.2.2"
} ,
"funding" : {
"type" : "github" ,
"url" : "https://github.com/sponsors/epoberezkin"
}
} ,
"node_modules/ansi-escapes" : {
"version" : "4.3.2" ,
"resolved" : "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" ,
"integrity" : "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" ,
"dev" : true ,
"dependencies" : {
"type-fest" : "^0.21.3"
} ,
"engines" : {
"node" : ">=8"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/ansi-regex" : {
"version" : "5.0.1" ,
"resolved" : "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" ,
"integrity" : "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/ansi-styles" : {
"version" : "4.3.0" ,
"resolved" : "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" ,
"integrity" : "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" ,
"dev" : true ,
"dependencies" : {
"color-convert" : "^2.0.1"
} ,
"engines" : {
"node" : ">=8"
} ,
"funding" : {
"url" : "https://github.com/chalk/ansi-styles?sponsor=1"
}
} ,
"node_modules/anymatch" : {
"version" : "3.1.3" ,
"resolved" : "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" ,
"integrity" : "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" ,
"dev" : true ,
"dependencies" : {
"normalize-path" : "^3.0.0" ,
"picomatch" : "^2.0.4"
} ,
"engines" : {
"node" : ">= 8"
}
} ,
"node_modules/argparse" : {
"version" : "2.0.1" ,
"resolved" : "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" ,
"integrity" : "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/array-flatten" : {
"version" : "1.1.1" ,
"resolved" : "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" ,
"integrity" : "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" ,
"license" : "MIT"
} ,
"node_modules/asynckit" : {
"version" : "0.4.0" ,
"resolved" : "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" ,
"integrity" : "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" ,
"license" : "MIT"
} ,
"node_modules/axios" : {
"version" : "1.16.1" ,
"resolved" : "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz" ,
"integrity" : "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==" ,
"license" : "MIT" ,
"dependencies" : {
"follow-redirects" : "^1.16.0" ,
"form-data" : "^4.0.5" ,
"https-proxy-agent" : "^5.0.1" ,
"proxy-from-env" : "^2.1.0"
}
} ,
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
"node_modules/babel-jest" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" ,
"integrity" : "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==" ,
"dev" : true ,
"dependencies" : {
"@jest/transform" : "^29.7.0" ,
"@types/babel__core" : "^7.1.14" ,
"babel-plugin-istanbul" : "^6.1.1" ,
"babel-preset-jest" : "^29.6.3" ,
"chalk" : "^4.0.0" ,
"graceful-fs" : "^4.2.9" ,
"slash" : "^3.0.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.8.0"
}
} ,
"node_modules/babel-plugin-istanbul" : {
"version" : "6.1.1" ,
"resolved" : "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" ,
"integrity" : "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" ,
"dev" : true ,
"dependencies" : {
"@babel/helper-plugin-utils" : "^7.0.0" ,
"@istanbuljs/load-nyc-config" : "^1.0.0" ,
"@istanbuljs/schema" : "^0.1.2" ,
"istanbul-lib-instrument" : "^5.0.4" ,
"test-exclude" : "^6.0.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument" : {
"version" : "5.2.1" ,
"resolved" : "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" ,
"integrity" : "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==" ,
"dev" : true ,
"dependencies" : {
"@babel/core" : "^7.12.3" ,
"@babel/parser" : "^7.14.7" ,
"@istanbuljs/schema" : "^0.1.2" ,
"istanbul-lib-coverage" : "^3.2.0" ,
"semver" : "^6.3.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/babel-plugin-jest-hoist" : {
"version" : "29.6.3" ,
"resolved" : "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" ,
"integrity" : "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==" ,
"dev" : true ,
"dependencies" : {
"@babel/template" : "^7.3.3" ,
"@babel/types" : "^7.3.3" ,
"@types/babel__core" : "^7.1.14" ,
"@types/babel__traverse" : "^7.0.6"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/babel-preset-current-node-syntax" : {
"version" : "1.2.0" ,
"resolved" : "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz" ,
"integrity" : "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==" ,
"dev" : true ,
"dependencies" : {
"@babel/plugin-syntax-async-generators" : "^7.8.4" ,
"@babel/plugin-syntax-bigint" : "^7.8.3" ,
"@babel/plugin-syntax-class-properties" : "^7.12.13" ,
"@babel/plugin-syntax-class-static-block" : "^7.14.5" ,
"@babel/plugin-syntax-import-attributes" : "^7.24.7" ,
"@babel/plugin-syntax-import-meta" : "^7.10.4" ,
"@babel/plugin-syntax-json-strings" : "^7.8.3" ,
"@babel/plugin-syntax-logical-assignment-operators" : "^7.10.4" ,
"@babel/plugin-syntax-nullish-coalescing-operator" : "^7.8.3" ,
"@babel/plugin-syntax-numeric-separator" : "^7.10.4" ,
"@babel/plugin-syntax-object-rest-spread" : "^7.8.3" ,
"@babel/plugin-syntax-optional-catch-binding" : "^7.8.3" ,
"@babel/plugin-syntax-optional-chaining" : "^7.8.3" ,
"@babel/plugin-syntax-private-property-in-object" : "^7.14.5" ,
"@babel/plugin-syntax-top-level-await" : "^7.14.5"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0 || ^8.0.0-0"
}
} ,
"node_modules/babel-preset-jest" : {
"version" : "29.6.3" ,
"resolved" : "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" ,
"integrity" : "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==" ,
"dev" : true ,
"dependencies" : {
"babel-plugin-jest-hoist" : "^29.6.3" ,
"babel-preset-current-node-syntax" : "^1.0.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
} ,
"peerDependencies" : {
"@babel/core" : "^7.0.0"
}
} ,
"node_modules/balanced-match" : {
"version" : "1.0.2" ,
"resolved" : "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" ,
"integrity" : "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/base64id" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz" ,
"integrity" : "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" ,
"license" : "MIT" ,
"engines" : {
"node" : "^4.5.0 || >= 5.9"
}
} ,
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
"node_modules/baseline-browser-mapping" : {
"version" : "2.10.0" ,
"resolved" : "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz" ,
"integrity" : "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==" ,
"dev" : true ,
"bin" : {
"baseline-browser-mapping" : "dist/cli.cjs"
} ,
"engines" : {
"node" : ">=6.0.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/body-parser" : {
"version" : "1.20.5" ,
"resolved" : "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz" ,
"integrity" : "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==" ,
"license" : "MIT" ,
"dependencies" : {
"bytes" : "~3.1.2" ,
"content-type" : "~1.0.5" ,
"debug" : "2.6.9" ,
"depd" : "2.0.0" ,
"destroy" : "~1.2.0" ,
"http-errors" : "~2.0.1" ,
"iconv-lite" : "~0.4.24" ,
"on-finished" : "~2.4.1" ,
"qs" : "~6.15.1" ,
"raw-body" : "~2.5.3" ,
"type-is" : "~1.6.18" ,
"unpipe" : "~1.0.0"
} ,
"engines" : {
"node" : ">= 0.8" ,
"npm" : "1.2.8000 || >= 1.4.16"
}
} ,
"node_modules/body-parser/node_modules/debug" : {
"version" : "2.6.9" ,
"resolved" : "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" ,
"integrity" : "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" ,
"license" : "MIT" ,
"dependencies" : {
"ms" : "2.0.0"
}
} ,
"node_modules/body-parser/node_modules/iconv-lite" : {
"version" : "0.4.24" ,
"resolved" : "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" ,
"integrity" : "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" ,
"license" : "MIT" ,
"dependencies" : {
"safer-buffer" : ">= 2.1.2 < 3"
} ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
"node_modules/body-parser/node_modules/ms" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" ,
"integrity" : "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" ,
"license" : "MIT"
} ,
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
"node_modules/brace-expansion" : {
"version" : "1.1.12" ,
"resolved" : "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz" ,
"integrity" : "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==" ,
"dev" : true ,
"dependencies" : {
"balanced-match" : "^1.0.0" ,
"concat-map" : "0.0.1"
}
} ,
"node_modules/braces" : {
"version" : "3.0.3" ,
"resolved" : "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" ,
"integrity" : "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==" ,
"dev" : true ,
"dependencies" : {
"fill-range" : "^7.1.1"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/browserslist" : {
"version" : "4.28.1" ,
"resolved" : "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz" ,
"integrity" : "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==" ,
"dev" : true ,
"funding" : [
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/browserslist"
} ,
{
"type" : "tidelift" ,
"url" : "https://tidelift.com/funding/github/npm/browserslist"
} ,
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
] ,
"dependencies" : {
"baseline-browser-mapping" : "^2.9.0" ,
"caniuse-lite" : "^1.0.30001759" ,
"electron-to-chromium" : "^1.5.263" ,
"node-releases" : "^2.0.27" ,
"update-browserslist-db" : "^1.2.0"
} ,
"bin" : {
"browserslist" : "cli.js"
} ,
"engines" : {
"node" : "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
} ,
"node_modules/bser" : {
"version" : "2.1.1" ,
"resolved" : "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" ,
"integrity" : "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==" ,
"dev" : true ,
"dependencies" : {
"node-int64" : "^0.4.0"
}
} ,
"node_modules/buffer-from" : {
"version" : "1.1.2" ,
"resolved" : "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" ,
"integrity" : "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/bytes" : {
"version" : "3.1.2" ,
"resolved" : "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" ,
"integrity" : "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.8"
}
} ,
"node_modules/call-bind-apply-helpers" : {
"version" : "1.0.2" ,
"resolved" : "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" ,
"integrity" : "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==" ,
"license" : "MIT" ,
"dependencies" : {
"es-errors" : "^1.3.0" ,
"function-bind" : "^1.1.2"
} ,
"engines" : {
"node" : ">= 0.4"
}
} ,
"node_modules/call-bound" : {
"version" : "1.0.4" ,
"resolved" : "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" ,
"integrity" : "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==" ,
"license" : "MIT" ,
"dependencies" : {
"call-bind-apply-helpers" : "^1.0.2" ,
"get-intrinsic" : "^1.3.0"
} ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
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
"node_modules/callsites" : {
"version" : "3.1.0" ,
"resolved" : "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" ,
"integrity" : "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" ,
"dev" : true ,
"engines" : {
"node" : ">=6"
}
} ,
"node_modules/camelcase" : {
"version" : "5.3.1" ,
"resolved" : "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" ,
"integrity" : "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" ,
"dev" : true ,
"engines" : {
"node" : ">=6"
}
} ,
"node_modules/caniuse-lite" : {
"version" : "1.0.30001777" ,
"resolved" : "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001777.tgz" ,
"integrity" : "sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==" ,
"dev" : true ,
"funding" : [
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/browserslist"
} ,
{
"type" : "tidelift" ,
"url" : "https://tidelift.com/funding/github/npm/caniuse-lite"
} ,
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
]
} ,
"node_modules/chalk" : {
"version" : "4.1.2" ,
"resolved" : "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" ,
"integrity" : "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" ,
"dev" : true ,
"dependencies" : {
"ansi-styles" : "^4.1.0" ,
"supports-color" : "^7.1.0"
} ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/chalk/chalk?sponsor=1"
}
} ,
"node_modules/char-regex" : {
"version" : "1.0.2" ,
"resolved" : "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" ,
"integrity" : "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" ,
"dev" : true ,
"engines" : {
"node" : ">=10"
}
} ,
"node_modules/ci-info" : {
"version" : "3.9.0" ,
"resolved" : "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" ,
"integrity" : "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==" ,
"dev" : true ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/sibiraj-s"
}
] ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/cjs-module-lexer" : {
"version" : "1.4.3" ,
"resolved" : "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz" ,
"integrity" : "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==" ,
"dev" : true
} ,
"node_modules/cliui" : {
"version" : "8.0.1" ,
"resolved" : "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" ,
"integrity" : "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" ,
"dev" : true ,
"dependencies" : {
"string-width" : "^4.2.0" ,
"strip-ansi" : "^6.0.1" ,
"wrap-ansi" : "^7.0.0"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/co" : {
"version" : "4.6.0" ,
"resolved" : "https://registry.npmjs.org/co/-/co-4.6.0.tgz" ,
"integrity" : "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" ,
"dev" : true ,
"engines" : {
"iojs" : ">= 1.0.0" ,
"node" : ">= 0.12.0"
}
} ,
"node_modules/collect-v8-coverage" : {
"version" : "1.0.3" ,
"resolved" : "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz" ,
"integrity" : "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==" ,
"dev" : true
} ,
"node_modules/color-convert" : {
"version" : "2.0.1" ,
"resolved" : "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" ,
"integrity" : "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" ,
"dev" : true ,
"dependencies" : {
"color-name" : "~1.1.4"
} ,
"engines" : {
"node" : ">=7.0.0"
}
} ,
"node_modules/color-name" : {
"version" : "1.1.4" ,
"resolved" : "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" ,
"integrity" : "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/combined-stream" : {
"version" : "1.0.8" ,
"resolved" : "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" ,
"integrity" : "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" ,
"license" : "MIT" ,
"dependencies" : {
"delayed-stream" : "~1.0.0"
} ,
"engines" : {
"node" : ">= 0.8"
}
} ,
"node_modules/commander" : {
"version" : "7.2.0" ,
"resolved" : "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" ,
"integrity" : "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 10"
}
} ,
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
"node_modules/complex.js" : {
"version" : "2.4.3" ,
"resolved" : "https://registry.npmjs.org/complex.js/-/complex.js-2.4.3.tgz" ,
"integrity" : "sha512-UrQVSUur14tNX6tiP4y8T4w4FeJAX3bi2cIv0pu/DTLFNxoq7z2Yh83Vfzztj6Px3X/lubqQ9IrPp7Bpn6p4MQ==" ,
"license" : "MIT" ,
"engines" : {
"node" : "*"
} ,
"funding" : {
"type" : "github" ,
"url" : "https://github.com/sponsors/rawify"
}
} ,
"node_modules/concat-map" : {
"version" : "0.0.1" ,
"resolved" : "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" ,
"integrity" : "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/content-disposition" : {
"version" : "0.5.4" ,
"resolved" : "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" ,
"integrity" : "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" ,
"license" : "MIT" ,
"dependencies" : {
"safe-buffer" : "5.2.1"
} ,
"engines" : {
"node" : ">= 0.6"
}
} ,
"node_modules/content-type" : {
"version" : "1.0.5" ,
"resolved" : "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" ,
"integrity" : "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.6"
}
} ,
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
"node_modules/convert-source-map" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" ,
"integrity" : "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/cookie" : {
"version" : "0.7.2" ,
"resolved" : "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz" ,
"integrity" : "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.6"
}
} ,
"node_modules/cookie-signature" : {
"version" : "1.0.7" ,
"resolved" : "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz" ,
"integrity" : "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==" ,
"license" : "MIT"
} ,
"node_modules/core-js" : {
"version" : "3.49.0" ,
"resolved" : "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz" ,
"integrity" : "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==" ,
"hasInstallScript" : true ,
"license" : "MIT" ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/core-js"
}
} ,
"node_modules/cors" : {
"version" : "2.8.6" ,
"resolved" : "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz" ,
"integrity" : "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==" ,
"license" : "MIT" ,
"dependencies" : {
"object-assign" : "^4" ,
"vary" : "^1"
} ,
"engines" : {
"node" : ">= 0.10"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/express"
}
} ,
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
"node_modules/create-jest" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" ,
"integrity" : "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==" ,
"dev" : true ,
"dependencies" : {
"@jest/types" : "^29.6.3" ,
"chalk" : "^4.0.0" ,
"exit" : "^0.1.2" ,
"graceful-fs" : "^4.2.9" ,
"jest-config" : "^29.7.0" ,
"jest-util" : "^29.7.0" ,
"prompts" : "^2.0.1"
} ,
"bin" : {
"create-jest" : "bin/create-jest.js"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/cross-spawn" : {
"version" : "7.0.6" ,
"resolved" : "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" ,
"integrity" : "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==" ,
"dev" : true ,
"dependencies" : {
"path-key" : "^3.1.0" ,
"shebang-command" : "^2.0.0" ,
"which" : "^2.0.1"
} ,
"engines" : {
"node" : ">= 8"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/csstype" : {
"version" : "3.2.3" ,
"resolved" : "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz" ,
"integrity" : "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==" ,
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
"license" : "MIT"
} ,
2026-05-28 09:15:30 +02:00
"node_modules/d3" : {
"version" : "7.9.0" ,
"resolved" : "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz" ,
"integrity" : "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-array" : "3" ,
"d3-axis" : "3" ,
"d3-brush" : "3" ,
"d3-chord" : "3" ,
"d3-color" : "3" ,
"d3-contour" : "4" ,
"d3-delaunay" : "6" ,
"d3-dispatch" : "3" ,
"d3-drag" : "3" ,
"d3-dsv" : "3" ,
"d3-ease" : "3" ,
"d3-fetch" : "3" ,
"d3-force" : "3" ,
"d3-format" : "3" ,
"d3-geo" : "3" ,
"d3-hierarchy" : "3" ,
"d3-interpolate" : "3" ,
"d3-path" : "3" ,
"d3-polygon" : "3" ,
"d3-quadtree" : "3" ,
"d3-random" : "3" ,
"d3-scale" : "4" ,
"d3-scale-chromatic" : "3" ,
"d3-selection" : "3" ,
"d3-shape" : "3" ,
"d3-time" : "3" ,
"d3-time-format" : "4" ,
"d3-timer" : "3" ,
"d3-transition" : "3" ,
"d3-zoom" : "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
} ,
"engines" : {
2026-05-28 09:15:30 +02:00
"node" : ">=12"
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-05-28 09:15:30 +02:00
"node_modules/d3-array" : {
"version" : "3.2.4" ,
"resolved" : "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" ,
"integrity" : "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==" ,
"license" : "ISC" ,
"dependencies" : {
"internmap" : "1 - 2"
} ,
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
"engines" : {
2026-05-28 09:15:30 +02:00
"node" : ">=12"
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-05-28 09:15:30 +02:00
"node_modules/d3-axis" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz" ,
"integrity" : "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" ,
"license" : "ISC" ,
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
"engines" : {
2026-05-28 09:15:30 +02:00
"node" : ">=12"
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-05-28 09:15:30 +02:00
"node_modules/d3-brush" : {
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
"version" : "3.0.0" ,
2026-05-28 09:15:30 +02:00
"resolved" : "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz" ,
"integrity" : "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==" ,
"license" : "ISC" ,
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
"dependencies" : {
2026-05-28 09:15:30 +02:00
"d3-dispatch" : "1 - 3" ,
"d3-drag" : "2 - 3" ,
"d3-interpolate" : "1 - 3" ,
"d3-selection" : "3" ,
"d3-transition" : "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
} ,
"engines" : {
2026-05-28 09:15:30 +02:00
"node" : ">=12"
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-05-28 09:15:30 +02:00
"node_modules/d3-chord" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz" ,
"integrity" : "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-path" : "1 - 3"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-color" : {
"version" : "3.1.0" ,
"resolved" : "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz" ,
"integrity" : "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" ,
"license" : "ISC" ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-contour" : {
"version" : "4.0.2" ,
"resolved" : "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz" ,
"integrity" : "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-array" : "^3.2.0"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-delaunay" : {
"version" : "6.0.4" ,
"resolved" : "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz" ,
"integrity" : "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==" ,
"license" : "ISC" ,
"dependencies" : {
"delaunator" : "5"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-dispatch" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz" ,
"integrity" : "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" ,
"license" : "ISC" ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-drag" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz" ,
"integrity" : "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-dispatch" : "1 - 3" ,
"d3-selection" : "3"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-dsv" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz" ,
"integrity" : "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==" ,
"license" : "ISC" ,
"dependencies" : {
"commander" : "7" ,
"iconv-lite" : "0.6" ,
"rw" : "1"
} ,
"bin" : {
"csv2json" : "bin/dsv2json.js" ,
"csv2tsv" : "bin/dsv2dsv.js" ,
"dsv2dsv" : "bin/dsv2dsv.js" ,
"dsv2json" : "bin/dsv2json.js" ,
"json2csv" : "bin/json2dsv.js" ,
"json2dsv" : "bin/json2dsv.js" ,
"json2tsv" : "bin/json2dsv.js" ,
"tsv2csv" : "bin/dsv2dsv.js" ,
"tsv2json" : "bin/dsv2json.js"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-ease" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz" ,
"integrity" : "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" ,
"license" : "BSD-3-Clause" ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-fetch" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz" ,
"integrity" : "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-dsv" : "1 - 3"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-force" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz" ,
"integrity" : "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-dispatch" : "1 - 3" ,
"d3-quadtree" : "1 - 3" ,
"d3-timer" : "1 - 3"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-format" : {
"version" : "3.1.2" ,
"resolved" : "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz" ,
"integrity" : "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==" ,
"license" : "ISC" ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-geo" : {
"version" : "3.1.1" ,
"resolved" : "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz" ,
"integrity" : "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-array" : "2.5.0 - 3"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-hierarchy" : {
"version" : "3.1.2" ,
"resolved" : "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz" ,
"integrity" : "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" ,
"license" : "ISC" ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-interpolate" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" ,
"integrity" : "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-color" : "1 - 3"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-path" : {
"version" : "3.1.0" ,
"resolved" : "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz" ,
"integrity" : "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" ,
"license" : "ISC" ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-polygon" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz" ,
"integrity" : "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" ,
"license" : "ISC" ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-quadtree" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz" ,
"integrity" : "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" ,
"license" : "ISC" ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-random" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz" ,
"integrity" : "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" ,
"license" : "ISC" ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-scale" : {
"version" : "4.0.2" ,
"resolved" : "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz" ,
"integrity" : "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-array" : "2.10.0 - 3" ,
"d3-format" : "1 - 3" ,
"d3-interpolate" : "1.2.0 - 3" ,
"d3-time" : "2.1.1 - 3" ,
"d3-time-format" : "2 - 4"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-scale-chromatic" : {
"version" : "3.1.0" ,
"resolved" : "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz" ,
"integrity" : "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-color" : "1 - 3" ,
"d3-interpolate" : "1 - 3"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-selection" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" ,
"integrity" : "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" ,
"license" : "ISC" ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-shape" : {
"version" : "3.2.0" ,
"resolved" : "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz" ,
"integrity" : "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-path" : "^3.1.0"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-time" : {
"version" : "3.1.0" ,
"resolved" : "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz" ,
"integrity" : "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-array" : "2 - 3"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-time-format" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz" ,
"integrity" : "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-time" : "1 - 3"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-timer" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz" ,
"integrity" : "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" ,
"license" : "ISC" ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/d3-transition" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz" ,
"integrity" : "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-color" : "1 - 3" ,
"d3-dispatch" : "1 - 3" ,
"d3-ease" : "1 - 3" ,
"d3-interpolate" : "1 - 3" ,
"d3-timer" : "1 - 3"
} ,
"engines" : {
"node" : ">=12"
} ,
"peerDependencies" : {
"d3-selection" : "2 - 3"
}
} ,
"node_modules/d3-zoom" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz" ,
"integrity" : "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==" ,
"license" : "ISC" ,
"dependencies" : {
"d3-dispatch" : "1 - 3" ,
"d3-drag" : "2 - 3" ,
"d3-interpolate" : "1 - 3" ,
"d3-selection" : "2 - 3" ,
"d3-transition" : "2 - 3"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/debug" : {
"version" : "4.4.3" ,
"resolved" : "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz" ,
"integrity" : "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==" ,
"dependencies" : {
"ms" : "^2.1.3"
} ,
"engines" : {
"node" : ">=6.0"
} ,
"peerDependenciesMeta" : {
"supports-color" : {
"optional" : true
}
}
} ,
"node_modules/decimal.js" : {
"version" : "10.6.0" ,
"resolved" : "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz" ,
"integrity" : "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==" ,
"license" : "MIT"
} ,
"node_modules/dedent" : {
"version" : "1.7.2" ,
"resolved" : "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz" ,
"integrity" : "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==" ,
"dev" : true ,
"peerDependencies" : {
"babel-plugin-macros" : "^3.1.0"
} ,
"peerDependenciesMeta" : {
"babel-plugin-macros" : {
"optional" : true
}
}
} ,
"node_modules/deep-is" : {
"version" : "0.1.4" ,
"resolved" : "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" ,
"integrity" : "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" ,
"dev" : true
} ,
"node_modules/deepmerge" : {
"version" : "4.3.1" ,
"resolved" : "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" ,
"integrity" : "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" ,
"dev" : true ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
"node_modules/delaunator" : {
"version" : "5.1.0" ,
"resolved" : "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz" ,
"integrity" : "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==" ,
"license" : "ISC" ,
"dependencies" : {
"robust-predicates" : "^3.0.2"
}
} ,
"node_modules/delayed-stream" : {
"version" : "1.0.0" ,
"resolved" : "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" ,
"integrity" : "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">=0.4.0"
}
} ,
"node_modules/depd" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" ,
"integrity" : "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.8"
}
} ,
"node_modules/destroy" : {
"version" : "1.2.0" ,
"resolved" : "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" ,
"integrity" : "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.8" ,
"npm" : "1.2.8000 || >= 1.4.16"
}
} ,
"node_modules/detect-newline" : {
"version" : "3.1.0" ,
"resolved" : "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" ,
"integrity" : "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/diff-sequences" : {
"version" : "29.6.3" ,
"resolved" : "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" ,
"integrity" : "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==" ,
"dev" : true ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/doctrine" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" ,
"integrity" : "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" ,
"dev" : true ,
"dependencies" : {
"esutils" : "^2.0.2"
} ,
"engines" : {
"node" : ">=6.0.0"
}
} ,
"node_modules/dunder-proto" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" ,
"integrity" : "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==" ,
"license" : "MIT" ,
"dependencies" : {
"call-bind-apply-helpers" : "^1.0.1" ,
"es-errors" : "^1.3.0" ,
"gopd" : "^1.2.0"
} ,
"engines" : {
"node" : ">= 0.4"
}
} ,
"node_modules/echarts" : {
"version" : "6.0.0" ,
"resolved" : "https://registry.npmjs.org/echarts/-/echarts-6.0.0.tgz" ,
"integrity" : "sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==" ,
"license" : "Apache-2.0" ,
"dependencies" : {
"tslib" : "2.3.0" ,
"zrender" : "6.0.0"
}
} ,
"node_modules/ee-first" : {
"version" : "1.1.1" ,
"resolved" : "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" ,
"integrity" : "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" ,
"license" : "MIT"
} ,
"node_modules/electron-to-chromium" : {
"version" : "1.5.307" ,
"resolved" : "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz" ,
"integrity" : "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==" ,
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
"dev" : true
} ,
"node_modules/emittery" : {
"version" : "0.13.1" ,
"resolved" : "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" ,
"integrity" : "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==" ,
"dev" : true ,
"engines" : {
"node" : ">=12"
} ,
"funding" : {
"url" : "https://github.com/sindresorhus/emittery?sponsor=1"
}
} ,
"node_modules/emoji-regex" : {
"version" : "8.0.0" ,
"resolved" : "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" ,
"integrity" : "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/encodeurl" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" ,
"integrity" : "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.8"
}
} ,
"node_modules/engine.io" : {
"version" : "6.6.7" ,
"resolved" : "https://registry.npmjs.org/engine.io/-/engine.io-6.6.7.tgz" ,
"integrity" : "sha512-DgOngfDKM2EviOH3Mr9m7ks1q8roetLy/IMmYthAYzbpInMbYc/GS+fWFA3rl1gvwKVsQrVV61fo5emD1y3OJQ==" ,
"license" : "MIT" ,
"dependencies" : {
"@types/cors" : "^2.8.12" ,
"@types/node" : ">=10.0.0" ,
"@types/ws" : "^8.5.12" ,
"accepts" : "~1.3.4" ,
"base64id" : "2.0.0" ,
"cookie" : "~0.7.2" ,
"cors" : "~2.8.5" ,
"debug" : "~4.4.1" ,
"engine.io-parser" : "~5.2.1" ,
"ws" : "~8.18.3"
} ,
"engines" : {
"node" : ">=10.2.0"
}
} ,
"node_modules/engine.io-parser" : {
"version" : "5.2.3" ,
"resolved" : "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz" ,
"integrity" : "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">=10.0.0"
}
} ,
"node_modules/entities" : {
"version" : "7.0.1" ,
"resolved" : "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz" ,
"integrity" : "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==" ,
"license" : "BSD-2-Clause" ,
"engines" : {
"node" : ">=0.12"
} ,
"funding" : {
"url" : "https://github.com/fb55/entities?sponsor=1"
}
} ,
"node_modules/error-ex" : {
"version" : "1.3.4" ,
"resolved" : "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz" ,
"integrity" : "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==" ,
"dev" : true ,
"dependencies" : {
"is-arrayish" : "^0.2.1"
}
} ,
"node_modules/es-define-property" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" ,
"integrity" : "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.4"
}
} ,
"node_modules/es-errors" : {
"version" : "1.3.0" ,
"resolved" : "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" ,
"integrity" : "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.4"
}
} ,
"node_modules/es-object-atoms" : {
"version" : "1.1.1" ,
"resolved" : "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" ,
"integrity" : "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==" ,
"license" : "MIT" ,
"dependencies" : {
"es-errors" : "^1.3.0"
} ,
"engines" : {
"node" : ">= 0.4"
}
} ,
"node_modules/es-set-tostringtag" : {
"version" : "2.1.0" ,
"resolved" : "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz" ,
"integrity" : "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==" ,
"license" : "MIT" ,
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
"dependencies" : {
2026-05-28 09:15:30 +02:00
"es-errors" : "^1.3.0" ,
"get-intrinsic" : "^1.2.6" ,
"has-tostringtag" : "^1.0.2" ,
"hasown" : "^2.0.2"
} ,
"engines" : {
"node" : ">= 0.4"
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
}
} ,
"node_modules/escalade" : {
"version" : "3.2.0" ,
"resolved" : "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" ,
"integrity" : "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" ,
"dev" : true ,
"engines" : {
"node" : ">=6"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/escape-html" : {
"version" : "1.0.3" ,
"resolved" : "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" ,
"integrity" : "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" ,
"license" : "MIT"
} ,
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
"node_modules/escape-latex" : {
"version" : "1.2.0" ,
"resolved" : "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz" ,
"integrity" : "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==" ,
"license" : "MIT"
} ,
"node_modules/escape-string-regexp" : {
"version" : "4.0.0" ,
"resolved" : "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" ,
"integrity" : "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" ,
"dev" : true ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/escodegen" : {
"version" : "2.1.0" ,
"resolved" : "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" ,
"integrity" : "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==" ,
"license" : "BSD-2-Clause" ,
"dependencies" : {
"esprima" : "^4.0.1" ,
"estraverse" : "^5.2.0" ,
"esutils" : "^2.0.2"
} ,
"bin" : {
"escodegen" : "bin/escodegen.js" ,
"esgenerate" : "bin/esgenerate.js"
} ,
"engines" : {
"node" : ">=6.0"
} ,
"optionalDependencies" : {
"source-map" : "~0.6.1"
}
} ,
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
"node_modules/eslint" : {
"version" : "8.57.1" ,
"resolved" : "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz" ,
"integrity" : "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==" ,
"deprecated" : "This version is no longer supported. Please see https://eslint.org/version-support for other options." ,
"dev" : true ,
"dependencies" : {
"@eslint-community/eslint-utils" : "^4.2.0" ,
"@eslint-community/regexpp" : "^4.6.1" ,
"@eslint/eslintrc" : "^2.1.4" ,
"@eslint/js" : "8.57.1" ,
"@humanwhocodes/config-array" : "^0.13.0" ,
"@humanwhocodes/module-importer" : "^1.0.1" ,
"@nodelib/fs.walk" : "^1.2.8" ,
"@ungap/structured-clone" : "^1.2.0" ,
"ajv" : "^6.12.4" ,
"chalk" : "^4.0.0" ,
"cross-spawn" : "^7.0.2" ,
"debug" : "^4.3.2" ,
"doctrine" : "^3.0.0" ,
"escape-string-regexp" : "^4.0.0" ,
"eslint-scope" : "^7.2.2" ,
"eslint-visitor-keys" : "^3.4.3" ,
"espree" : "^9.6.1" ,
"esquery" : "^1.4.2" ,
"esutils" : "^2.0.2" ,
"fast-deep-equal" : "^3.1.3" ,
"file-entry-cache" : "^6.0.1" ,
"find-up" : "^5.0.0" ,
"glob-parent" : "^6.0.2" ,
"globals" : "^13.19.0" ,
"graphemer" : "^1.4.0" ,
"ignore" : "^5.2.0" ,
"imurmurhash" : "^0.1.4" ,
"is-glob" : "^4.0.0" ,
"is-path-inside" : "^3.0.3" ,
"js-yaml" : "^4.1.0" ,
"json-stable-stringify-without-jsonify" : "^1.0.1" ,
"levn" : "^0.4.1" ,
"lodash.merge" : "^4.6.2" ,
"minimatch" : "^3.1.2" ,
"natural-compare" : "^1.4.0" ,
"optionator" : "^0.9.3" ,
"strip-ansi" : "^6.0.1" ,
"text-table" : "^0.2.0"
} ,
"bin" : {
"eslint" : "bin/eslint.js"
} ,
"engines" : {
"node" : "^12.22.0 || ^14.17.0 || >=16.0.0"
} ,
"funding" : {
"url" : "https://opencollective.com/eslint"
}
} ,
"node_modules/eslint-scope" : {
"version" : "7.2.2" ,
"resolved" : "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" ,
"integrity" : "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==" ,
"dev" : true ,
"dependencies" : {
"esrecurse" : "^4.3.0" ,
"estraverse" : "^5.2.0"
} ,
"engines" : {
"node" : "^12.22.0 || ^14.17.0 || >=16.0.0"
} ,
"funding" : {
"url" : "https://opencollective.com/eslint"
}
} ,
"node_modules/eslint-visitor-keys" : {
"version" : "3.4.3" ,
"resolved" : "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" ,
"integrity" : "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" ,
"dev" : true ,
"engines" : {
"node" : "^12.22.0 || ^14.17.0 || >=16.0.0"
} ,
"funding" : {
"url" : "https://opencollective.com/eslint"
}
} ,
"node_modules/eslint/node_modules/globals" : {
"version" : "13.24.0" ,
"resolved" : "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" ,
"integrity" : "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==" ,
"dev" : true ,
"dependencies" : {
"type-fest" : "^0.20.2"
} ,
"engines" : {
"node" : ">=8"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/eslint/node_modules/type-fest" : {
"version" : "0.20.2" ,
"resolved" : "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" ,
"integrity" : "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" ,
"dev" : true ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/espree" : {
"version" : "9.6.1" ,
"resolved" : "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" ,
"integrity" : "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==" ,
"dev" : true ,
"dependencies" : {
"acorn" : "^8.9.0" ,
"acorn-jsx" : "^5.3.2" ,
"eslint-visitor-keys" : "^3.4.1"
} ,
"engines" : {
"node" : "^12.22.0 || ^14.17.0 || >=16.0.0"
} ,
"funding" : {
"url" : "https://opencollective.com/eslint"
}
} ,
"node_modules/esprima" : {
"version" : "4.0.1" ,
"resolved" : "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" ,
"integrity" : "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" ,
"bin" : {
"esparse" : "bin/esparse.js" ,
"esvalidate" : "bin/esvalidate.js"
} ,
"engines" : {
"node" : ">=4"
}
} ,
"node_modules/esquery" : {
"version" : "1.7.0" ,
"resolved" : "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz" ,
"integrity" : "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==" ,
"dev" : true ,
"dependencies" : {
"estraverse" : "^5.1.0"
} ,
"engines" : {
"node" : ">=0.10"
}
} ,
"node_modules/esrecurse" : {
"version" : "4.3.0" ,
"resolved" : "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" ,
"integrity" : "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" ,
"dev" : true ,
"dependencies" : {
"estraverse" : "^5.2.0"
} ,
"engines" : {
"node" : ">=4.0"
}
} ,
"node_modules/estraverse" : {
"version" : "5.3.0" ,
"resolved" : "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" ,
"integrity" : "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" ,
"engines" : {
"node" : ">=4.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/estree-walker" : {
"version" : "2.0.2" ,
"resolved" : "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" ,
"integrity" : "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" ,
"license" : "MIT"
} ,
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
"node_modules/esutils" : {
"version" : "2.0.3" ,
"resolved" : "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" ,
"integrity" : "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/etag" : {
"version" : "1.8.1" ,
"resolved" : "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" ,
"integrity" : "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.6"
}
} ,
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
"node_modules/execa" : {
"version" : "5.1.1" ,
"resolved" : "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" ,
"integrity" : "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" ,
"dev" : true ,
"dependencies" : {
"cross-spawn" : "^7.0.3" ,
"get-stream" : "^6.0.0" ,
"human-signals" : "^2.1.0" ,
"is-stream" : "^2.0.0" ,
"merge-stream" : "^2.0.0" ,
"npm-run-path" : "^4.0.1" ,
"onetime" : "^5.1.2" ,
"signal-exit" : "^3.0.3" ,
"strip-final-newline" : "^2.0.0"
} ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sindresorhus/execa?sponsor=1"
}
} ,
"node_modules/exit" : {
"version" : "0.1.2" ,
"resolved" : "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" ,
"integrity" : "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" ,
"dev" : true ,
"engines" : {
"node" : ">= 0.8.0"
}
} ,
"node_modules/expect" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" ,
"integrity" : "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==" ,
"dev" : true ,
"dependencies" : {
"@jest/expect-utils" : "^29.7.0" ,
"jest-get-type" : "^29.6.3" ,
"jest-matcher-utils" : "^29.7.0" ,
"jest-message-util" : "^29.7.0" ,
"jest-util" : "^29.7.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/express" : {
"version" : "4.22.2" ,
"resolved" : "https://registry.npmjs.org/express/-/express-4.22.2.tgz" ,
"integrity" : "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==" ,
"license" : "MIT" ,
"dependencies" : {
"accepts" : "~1.3.8" ,
"array-flatten" : "1.1.1" ,
"body-parser" : "~1.20.5" ,
"content-disposition" : "~0.5.4" ,
"content-type" : "~1.0.4" ,
"cookie" : "~0.7.1" ,
"cookie-signature" : "~1.0.6" ,
"debug" : "2.6.9" ,
"depd" : "2.0.0" ,
"encodeurl" : "~2.0.0" ,
"escape-html" : "~1.0.3" ,
"etag" : "~1.8.1" ,
"finalhandler" : "~1.3.1" ,
"fresh" : "~0.5.2" ,
"http-errors" : "~2.0.0" ,
"merge-descriptors" : "1.0.3" ,
"methods" : "~1.1.2" ,
"on-finished" : "~2.4.1" ,
"parseurl" : "~1.3.3" ,
"path-to-regexp" : "~0.1.12" ,
"proxy-addr" : "~2.0.7" ,
"qs" : "~6.15.1" ,
"range-parser" : "~1.2.1" ,
"safe-buffer" : "5.2.1" ,
"send" : "~0.19.0" ,
"serve-static" : "~1.16.2" ,
"setprototypeof" : "1.2.0" ,
"statuses" : "~2.0.1" ,
"type-is" : "~1.6.18" ,
"utils-merge" : "1.0.1" ,
"vary" : "~1.1.2"
} ,
"engines" : {
"node" : ">= 0.10.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/express"
}
} ,
"node_modules/express/node_modules/debug" : {
"version" : "2.6.9" ,
"resolved" : "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" ,
"integrity" : "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" ,
"license" : "MIT" ,
"dependencies" : {
"ms" : "2.0.0"
}
} ,
"node_modules/express/node_modules/ms" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" ,
"integrity" : "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" ,
"license" : "MIT"
} ,
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
"node_modules/fast-deep-equal" : {
"version" : "3.1.3" ,
"resolved" : "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" ,
"integrity" : "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" ,
"dev" : true
} ,
"node_modules/fast-json-stable-stringify" : {
"version" : "2.1.0" ,
"resolved" : "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" ,
"integrity" : "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" ,
"dev" : true
} ,
"node_modules/fast-levenshtein" : {
"version" : "2.0.6" ,
"resolved" : "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" ,
"integrity" : "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" ,
"dev" : true
} ,
"node_modules/fastq" : {
"version" : "1.20.1" ,
"resolved" : "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz" ,
"integrity" : "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==" ,
"dev" : true ,
"dependencies" : {
"reusify" : "^1.0.4"
}
} ,
"node_modules/fb-watchman" : {
"version" : "2.0.2" ,
"resolved" : "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" ,
"integrity" : "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==" ,
"dev" : true ,
"dependencies" : {
"bser" : "2.1.1"
}
} ,
"node_modules/file-entry-cache" : {
"version" : "6.0.1" ,
"resolved" : "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" ,
"integrity" : "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" ,
"dev" : true ,
"dependencies" : {
"flat-cache" : "^3.0.4"
} ,
"engines" : {
"node" : "^10.12.0 || >=12.0.0"
}
} ,
"node_modules/fill-range" : {
"version" : "7.1.1" ,
"resolved" : "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" ,
"integrity" : "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==" ,
"dev" : true ,
"dependencies" : {
"to-regex-range" : "^5.0.1"
} ,
"engines" : {
"node" : ">=8"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/finalhandler" : {
"version" : "1.3.2" ,
"resolved" : "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz" ,
"integrity" : "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==" ,
"license" : "MIT" ,
"dependencies" : {
"debug" : "2.6.9" ,
"encodeurl" : "~2.0.0" ,
"escape-html" : "~1.0.3" ,
"on-finished" : "~2.4.1" ,
"parseurl" : "~1.3.3" ,
"statuses" : "~2.0.2" ,
"unpipe" : "~1.0.0"
} ,
"engines" : {
"node" : ">= 0.8"
}
} ,
"node_modules/finalhandler/node_modules/debug" : {
"version" : "2.6.9" ,
"resolved" : "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" ,
"integrity" : "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" ,
"license" : "MIT" ,
"dependencies" : {
"ms" : "2.0.0"
}
} ,
"node_modules/finalhandler/node_modules/ms" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" ,
"integrity" : "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" ,
"license" : "MIT"
} ,
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
"node_modules/find-up" : {
"version" : "5.0.0" ,
"resolved" : "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" ,
"integrity" : "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" ,
"dev" : true ,
"dependencies" : {
"locate-path" : "^6.0.0" ,
"path-exists" : "^4.0.0"
} ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/flat-cache" : {
"version" : "3.2.0" ,
"resolved" : "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" ,
"integrity" : "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==" ,
"dev" : true ,
"dependencies" : {
"flatted" : "^3.2.9" ,
"keyv" : "^4.5.3" ,
"rimraf" : "^3.0.2"
} ,
"engines" : {
"node" : "^10.12.0 || >=12.0.0"
}
} ,
"node_modules/flatted" : {
"version" : "3.4.1" ,
"resolved" : "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz" ,
"integrity" : "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/follow-redirects" : {
"version" : "1.16.0" ,
"resolved" : "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz" ,
"integrity" : "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==" ,
"funding" : [
{
"type" : "individual" ,
"url" : "https://github.com/sponsors/RubenVerborgh"
}
] ,
"license" : "MIT" ,
"engines" : {
"node" : ">=4.0"
} ,
"peerDependenciesMeta" : {
"debug" : {
"optional" : true
}
}
} ,
"node_modules/form-data" : {
"version" : "4.0.5" ,
"resolved" : "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz" ,
"integrity" : "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==" ,
"license" : "MIT" ,
"dependencies" : {
"asynckit" : "^0.4.0" ,
"combined-stream" : "^1.0.8" ,
"es-set-tostringtag" : "^2.1.0" ,
"hasown" : "^2.0.2" ,
"mime-types" : "^2.1.12"
} ,
"engines" : {
"node" : ">= 6"
}
} ,
"node_modules/forwarded" : {
"version" : "0.2.0" ,
"resolved" : "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" ,
"integrity" : "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.6"
}
} ,
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
"node_modules/fraction.js" : {
"version" : "4.3.7" ,
"resolved" : "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz" ,
"integrity" : "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==" ,
"license" : "MIT" ,
"engines" : {
"node" : "*"
} ,
"funding" : {
"type" : "patreon" ,
"url" : "https://github.com/sponsors/rawify"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/fresh" : {
"version" : "0.5.2" ,
"resolved" : "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" ,
"integrity" : "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.6"
}
} ,
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
"node_modules/fs.realpath" : {
"version" : "1.0.0" ,
"resolved" : "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" ,
"integrity" : "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" ,
"dev" : true
} ,
"node_modules/fsevents" : {
"version" : "2.3.3" ,
"resolved" : "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" ,
"integrity" : "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" ,
"dev" : true ,
"hasInstallScript" : true ,
"optional" : true ,
"os" : [
"darwin"
] ,
"engines" : {
"node" : "^8.16.0 || ^10.6.0 || >=11.0.0"
}
} ,
"node_modules/function-bind" : {
"version" : "1.1.2" ,
"resolved" : "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" ,
"integrity" : "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
"node_modules/generalFunctions" : {
2026-05-28 09:15:30 +02:00
"resolved" : "nodes/generalFunctions" ,
"link" : true
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
} ,
"node_modules/gensync" : {
"version" : "1.0.0-beta.2" ,
"resolved" : "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" ,
"integrity" : "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" ,
"dev" : true ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/get-caller-file" : {
"version" : "2.0.5" ,
"resolved" : "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" ,
"integrity" : "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" ,
"dev" : true ,
"engines" : {
"node" : "6.* || 8.* || >= 10.*"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/get-intrinsic" : {
"version" : "1.3.0" ,
"resolved" : "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" ,
"integrity" : "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==" ,
"license" : "MIT" ,
"dependencies" : {
"call-bind-apply-helpers" : "^1.0.2" ,
"es-define-property" : "^1.0.1" ,
"es-errors" : "^1.3.0" ,
"es-object-atoms" : "^1.1.1" ,
"function-bind" : "^1.1.2" ,
"get-proto" : "^1.0.1" ,
"gopd" : "^1.2.0" ,
"has-symbols" : "^1.1.0" ,
"hasown" : "^2.0.2" ,
"math-intrinsics" : "^1.1.0"
} ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
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
"node_modules/get-package-type" : {
"version" : "0.1.0" ,
"resolved" : "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" ,
"integrity" : "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" ,
"dev" : true ,
"engines" : {
"node" : ">=8.0.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/get-proto" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" ,
"integrity" : "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==" ,
"license" : "MIT" ,
"dependencies" : {
"dunder-proto" : "^1.0.1" ,
"es-object-atoms" : "^1.0.0"
} ,
"engines" : {
"node" : ">= 0.4"
}
} ,
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
"node_modules/get-stream" : {
"version" : "6.0.1" ,
"resolved" : "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" ,
"integrity" : "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" ,
"dev" : true ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/glob" : {
"version" : "7.2.3" ,
"resolved" : "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" ,
"integrity" : "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" ,
"deprecated" : "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me" ,
"dev" : true ,
"dependencies" : {
"fs.realpath" : "^1.0.0" ,
"inflight" : "^1.0.4" ,
"inherits" : "2" ,
"minimatch" : "^3.1.1" ,
"once" : "^1.3.0" ,
"path-is-absolute" : "^1.0.0"
} ,
"engines" : {
"node" : "*"
} ,
"funding" : {
"url" : "https://github.com/sponsors/isaacs"
}
} ,
"node_modules/glob-parent" : {
"version" : "6.0.2" ,
"resolved" : "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" ,
"integrity" : "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" ,
"dev" : true ,
"dependencies" : {
"is-glob" : "^4.0.3"
} ,
"engines" : {
"node" : ">=10.13.0"
}
} ,
"node_modules/globals" : {
"version" : "15.15.0" ,
"resolved" : "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz" ,
"integrity" : "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==" ,
"dev" : true ,
"engines" : {
"node" : ">=18"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/gopd" : {
"version" : "1.2.0" ,
"resolved" : "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" ,
"integrity" : "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
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
"node_modules/graceful-fs" : {
"version" : "4.2.11" ,
"resolved" : "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" ,
"integrity" : "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" ,
"dev" : true
} ,
"node_modules/graphemer" : {
"version" : "1.4.0" ,
"resolved" : "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" ,
"integrity" : "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" ,
"dev" : true
} ,
"node_modules/has-flag" : {
"version" : "4.0.0" ,
"resolved" : "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" ,
"integrity" : "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/has-symbols" : {
"version" : "1.1.0" ,
"resolved" : "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" ,
"integrity" : "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
"node_modules/has-tostringtag" : {
"version" : "1.0.2" ,
"resolved" : "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" ,
"integrity" : "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==" ,
"license" : "MIT" ,
"dependencies" : {
"has-symbols" : "^1.0.3"
} ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
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
"node_modules/hasown" : {
"version" : "2.0.2" ,
"resolved" : "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" ,
"integrity" : "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==" ,
"dependencies" : {
"function-bind" : "^1.1.2"
} ,
"engines" : {
"node" : ">= 0.4"
}
} ,
"node_modules/html-escaper" : {
"version" : "2.0.2" ,
"resolved" : "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" ,
"integrity" : "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/http-errors" : {
"version" : "2.0.1" ,
"resolved" : "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz" ,
"integrity" : "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==" ,
"license" : "MIT" ,
"dependencies" : {
"depd" : "~2.0.0" ,
"inherits" : "~2.0.4" ,
"setprototypeof" : "~1.2.0" ,
"statuses" : "~2.0.2" ,
"toidentifier" : "~1.0.1"
} ,
"engines" : {
"node" : ">= 0.8"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/express"
}
} ,
"node_modules/https-proxy-agent" : {
"version" : "5.0.1" ,
"resolved" : "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" ,
"integrity" : "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==" ,
"license" : "MIT" ,
"dependencies" : {
"agent-base" : "6" ,
"debug" : "4"
} ,
"engines" : {
"node" : ">= 6"
}
} ,
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
"node_modules/human-signals" : {
"version" : "2.1.0" ,
"resolved" : "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" ,
"integrity" : "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" ,
"dev" : true ,
"engines" : {
"node" : ">=10.17.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/iconv-lite" : {
"version" : "0.6.3" ,
"resolved" : "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" ,
"integrity" : "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" ,
"license" : "MIT" ,
"dependencies" : {
"safer-buffer" : ">= 2.1.2 < 3.0.0"
} ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
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
"node_modules/ignore" : {
"version" : "5.3.2" ,
"resolved" : "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" ,
"integrity" : "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" ,
"dev" : true ,
"engines" : {
"node" : ">= 4"
}
} ,
"node_modules/import-fresh" : {
"version" : "3.3.1" ,
"resolved" : "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz" ,
"integrity" : "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==" ,
"dev" : true ,
"dependencies" : {
"parent-module" : "^1.0.0" ,
"resolve-from" : "^4.0.0"
} ,
"engines" : {
"node" : ">=6"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/import-local" : {
"version" : "3.2.0" ,
"resolved" : "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz" ,
"integrity" : "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==" ,
"dev" : true ,
"dependencies" : {
"pkg-dir" : "^4.2.0" ,
"resolve-cwd" : "^3.0.0"
} ,
"bin" : {
"import-local-fixture" : "fixtures/cli.js"
} ,
"engines" : {
"node" : ">=8"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/imurmurhash" : {
"version" : "0.1.4" ,
"resolved" : "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" ,
"integrity" : "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" ,
"dev" : true ,
"engines" : {
"node" : ">=0.8.19"
}
} ,
"node_modules/inflight" : {
"version" : "1.0.6" ,
"resolved" : "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" ,
"integrity" : "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" ,
"deprecated" : "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful." ,
"dev" : true ,
"dependencies" : {
"once" : "^1.3.0" ,
"wrappy" : "1"
}
} ,
"node_modules/inherits" : {
"version" : "2.0.4" ,
"resolved" : "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" ,
2026-05-28 09:15:30 +02:00
"integrity" : "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
} ,
"node_modules/internmap" : {
"version" : "2.0.3" ,
"resolved" : "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz" ,
"integrity" : "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" ,
"license" : "ISC" ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/ipaddr.js" : {
"version" : "1.9.1" ,
"resolved" : "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" ,
"integrity" : "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.10"
}
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
} ,
"node_modules/is-arrayish" : {
"version" : "0.2.1" ,
"resolved" : "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" ,
"integrity" : "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" ,
"dev" : true
} ,
"node_modules/is-core-module" : {
"version" : "2.16.1" ,
"resolved" : "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" ,
"integrity" : "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==" ,
"dev" : true ,
"dependencies" : {
"hasown" : "^2.0.2"
} ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
"node_modules/is-extglob" : {
"version" : "2.1.1" ,
"resolved" : "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" ,
"integrity" : "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" ,
"dev" : true ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
"node_modules/is-fullwidth-code-point" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" ,
"integrity" : "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/is-generator-fn" : {
"version" : "2.1.0" ,
"resolved" : "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" ,
"integrity" : "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" ,
"dev" : true ,
"engines" : {
"node" : ">=6"
}
} ,
"node_modules/is-glob" : {
"version" : "4.0.3" ,
"resolved" : "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" ,
"integrity" : "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" ,
"dev" : true ,
"dependencies" : {
"is-extglob" : "^2.1.1"
} ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
"node_modules/is-number" : {
"version" : "7.0.0" ,
"resolved" : "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" ,
"integrity" : "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" ,
"dev" : true ,
"engines" : {
"node" : ">=0.12.0"
}
} ,
"node_modules/is-path-inside" : {
"version" : "3.0.3" ,
"resolved" : "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" ,
"integrity" : "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/is-stream" : {
"version" : "2.0.1" ,
"resolved" : "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" ,
"integrity" : "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/isexe" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" ,
"integrity" : "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" ,
"dev" : true
} ,
"node_modules/istanbul-lib-coverage" : {
"version" : "3.2.2" ,
"resolved" : "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" ,
"integrity" : "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/istanbul-lib-instrument" : {
"version" : "6.0.3" ,
"resolved" : "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz" ,
"integrity" : "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==" ,
"dev" : true ,
"dependencies" : {
"@babel/core" : "^7.23.9" ,
"@babel/parser" : "^7.23.9" ,
"@istanbuljs/schema" : "^0.1.3" ,
"istanbul-lib-coverage" : "^3.2.0" ,
"semver" : "^7.5.4"
} ,
"engines" : {
"node" : ">=10"
}
} ,
"node_modules/istanbul-lib-instrument/node_modules/semver" : {
"version" : "7.7.4" ,
"resolved" : "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz" ,
"integrity" : "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==" ,
"dev" : true ,
"bin" : {
"semver" : "bin/semver.js"
} ,
"engines" : {
"node" : ">=10"
}
} ,
"node_modules/istanbul-lib-report" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" ,
"integrity" : "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==" ,
"dev" : true ,
"dependencies" : {
"istanbul-lib-coverage" : "^3.0.0" ,
"make-dir" : "^4.0.0" ,
"supports-color" : "^7.1.0"
} ,
"engines" : {
"node" : ">=10"
}
} ,
"node_modules/istanbul-lib-source-maps" : {
"version" : "4.0.1" ,
"resolved" : "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" ,
"integrity" : "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==" ,
"dev" : true ,
"dependencies" : {
"debug" : "^4.1.1" ,
"istanbul-lib-coverage" : "^3.0.0" ,
"source-map" : "^0.6.1"
} ,
"engines" : {
"node" : ">=10"
}
} ,
"node_modules/istanbul-reports" : {
"version" : "3.2.0" ,
"resolved" : "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz" ,
"integrity" : "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==" ,
"dev" : true ,
"dependencies" : {
"html-escaper" : "^2.0.0" ,
"istanbul-lib-report" : "^3.0.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/javascript-natural-sort" : {
"version" : "0.7.1" ,
"resolved" : "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz" ,
"integrity" : "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==" ,
"license" : "MIT"
} ,
"node_modules/jest" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" ,
"integrity" : "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==" ,
"dev" : true ,
"dependencies" : {
"@jest/core" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"import-local" : "^3.0.2" ,
"jest-cli" : "^29.7.0"
} ,
"bin" : {
"jest" : "bin/jest.js"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
} ,
"peerDependencies" : {
"node-notifier" : "^8.0.1 || ^9.0.0 || ^10.0.0"
} ,
"peerDependenciesMeta" : {
"node-notifier" : {
"optional" : true
}
}
} ,
"node_modules/jest-changed-files" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz" ,
"integrity" : "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==" ,
"dev" : true ,
"dependencies" : {
"execa" : "^5.0.0" ,
"jest-util" : "^29.7.0" ,
"p-limit" : "^3.1.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-circus" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz" ,
"integrity" : "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==" ,
"dev" : true ,
"dependencies" : {
"@jest/environment" : "^29.7.0" ,
"@jest/expect" : "^29.7.0" ,
"@jest/test-result" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"@types/node" : "*" ,
"chalk" : "^4.0.0" ,
"co" : "^4.6.0" ,
"dedent" : "^1.0.0" ,
"is-generator-fn" : "^2.0.0" ,
"jest-each" : "^29.7.0" ,
"jest-matcher-utils" : "^29.7.0" ,
"jest-message-util" : "^29.7.0" ,
"jest-runtime" : "^29.7.0" ,
"jest-snapshot" : "^29.7.0" ,
"jest-util" : "^29.7.0" ,
"p-limit" : "^3.1.0" ,
"pretty-format" : "^29.7.0" ,
"pure-rand" : "^6.0.0" ,
"slash" : "^3.0.0" ,
"stack-utils" : "^2.0.3"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-cli" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz" ,
"integrity" : "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==" ,
"dev" : true ,
"dependencies" : {
"@jest/core" : "^29.7.0" ,
"@jest/test-result" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"chalk" : "^4.0.0" ,
"create-jest" : "^29.7.0" ,
"exit" : "^0.1.2" ,
"import-local" : "^3.0.2" ,
"jest-config" : "^29.7.0" ,
"jest-util" : "^29.7.0" ,
"jest-validate" : "^29.7.0" ,
"yargs" : "^17.3.1"
} ,
"bin" : {
"jest" : "bin/jest.js"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
} ,
"peerDependencies" : {
"node-notifier" : "^8.0.1 || ^9.0.0 || ^10.0.0"
} ,
"peerDependenciesMeta" : {
"node-notifier" : {
"optional" : true
}
}
} ,
"node_modules/jest-config" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz" ,
"integrity" : "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==" ,
"dev" : true ,
"dependencies" : {
"@babel/core" : "^7.11.6" ,
"@jest/test-sequencer" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"babel-jest" : "^29.7.0" ,
"chalk" : "^4.0.0" ,
"ci-info" : "^3.2.0" ,
"deepmerge" : "^4.2.2" ,
"glob" : "^7.1.3" ,
"graceful-fs" : "^4.2.9" ,
"jest-circus" : "^29.7.0" ,
"jest-environment-node" : "^29.7.0" ,
"jest-get-type" : "^29.6.3" ,
"jest-regex-util" : "^29.6.3" ,
"jest-resolve" : "^29.7.0" ,
"jest-runner" : "^29.7.0" ,
"jest-util" : "^29.7.0" ,
"jest-validate" : "^29.7.0" ,
"micromatch" : "^4.0.4" ,
"parse-json" : "^5.2.0" ,
"pretty-format" : "^29.7.0" ,
"slash" : "^3.0.0" ,
"strip-json-comments" : "^3.1.1"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
} ,
"peerDependencies" : {
"@types/node" : "*" ,
"ts-node" : ">=9.0.0"
} ,
"peerDependenciesMeta" : {
"@types/node" : {
"optional" : true
} ,
"ts-node" : {
"optional" : true
}
}
} ,
"node_modules/jest-diff" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" ,
"integrity" : "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==" ,
"dev" : true ,
"dependencies" : {
"chalk" : "^4.0.0" ,
"diff-sequences" : "^29.6.3" ,
"jest-get-type" : "^29.6.3" ,
"pretty-format" : "^29.7.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-docblock" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz" ,
"integrity" : "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==" ,
"dev" : true ,
"dependencies" : {
"detect-newline" : "^3.0.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-each" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz" ,
"integrity" : "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==" ,
"dev" : true ,
"dependencies" : {
"@jest/types" : "^29.6.3" ,
"chalk" : "^4.0.0" ,
"jest-get-type" : "^29.6.3" ,
"jest-util" : "^29.7.0" ,
"pretty-format" : "^29.7.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-environment-node" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" ,
"integrity" : "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==" ,
"dev" : true ,
"dependencies" : {
"@jest/environment" : "^29.7.0" ,
"@jest/fake-timers" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"@types/node" : "*" ,
"jest-mock" : "^29.7.0" ,
"jest-util" : "^29.7.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-get-type" : {
"version" : "29.6.3" ,
"resolved" : "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" ,
"integrity" : "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==" ,
"dev" : true ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-haste-map" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz" ,
"integrity" : "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==" ,
"dev" : true ,
"dependencies" : {
"@jest/types" : "^29.6.3" ,
"@types/graceful-fs" : "^4.1.3" ,
"@types/node" : "*" ,
"anymatch" : "^3.0.3" ,
"fb-watchman" : "^2.0.0" ,
"graceful-fs" : "^4.2.9" ,
"jest-regex-util" : "^29.6.3" ,
"jest-util" : "^29.7.0" ,
"jest-worker" : "^29.7.0" ,
"micromatch" : "^4.0.4" ,
"walker" : "^1.0.8"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
} ,
"optionalDependencies" : {
"fsevents" : "^2.3.2"
}
} ,
"node_modules/jest-leak-detector" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz" ,
"integrity" : "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==" ,
"dev" : true ,
"dependencies" : {
"jest-get-type" : "^29.6.3" ,
"pretty-format" : "^29.7.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-matcher-utils" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" ,
"integrity" : "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==" ,
"dev" : true ,
"dependencies" : {
"chalk" : "^4.0.0" ,
"jest-diff" : "^29.7.0" ,
"jest-get-type" : "^29.6.3" ,
"pretty-format" : "^29.7.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-message-util" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" ,
"integrity" : "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==" ,
"dev" : true ,
"dependencies" : {
"@babel/code-frame" : "^7.12.13" ,
"@jest/types" : "^29.6.3" ,
"@types/stack-utils" : "^2.0.0" ,
"chalk" : "^4.0.0" ,
"graceful-fs" : "^4.2.9" ,
"micromatch" : "^4.0.4" ,
"pretty-format" : "^29.7.0" ,
"slash" : "^3.0.0" ,
"stack-utils" : "^2.0.3"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-mock" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" ,
"integrity" : "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==" ,
"dev" : true ,
"dependencies" : {
"@jest/types" : "^29.6.3" ,
"@types/node" : "*" ,
"jest-util" : "^29.7.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-pnp-resolver" : {
"version" : "1.2.3" ,
"resolved" : "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" ,
"integrity" : "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==" ,
"dev" : true ,
"engines" : {
"node" : ">=6"
} ,
"peerDependencies" : {
"jest-resolve" : "*"
} ,
"peerDependenciesMeta" : {
"jest-resolve" : {
"optional" : true
}
}
} ,
"node_modules/jest-regex-util" : {
"version" : "29.6.3" ,
"resolved" : "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" ,
"integrity" : "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==" ,
"dev" : true ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-resolve" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" ,
"integrity" : "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==" ,
"dev" : true ,
"dependencies" : {
"chalk" : "^4.0.0" ,
"graceful-fs" : "^4.2.9" ,
"jest-haste-map" : "^29.7.0" ,
"jest-pnp-resolver" : "^1.2.2" ,
"jest-util" : "^29.7.0" ,
"jest-validate" : "^29.7.0" ,
"resolve" : "^1.20.0" ,
"resolve.exports" : "^2.0.0" ,
"slash" : "^3.0.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-resolve-dependencies" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz" ,
"integrity" : "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==" ,
"dev" : true ,
"dependencies" : {
"jest-regex-util" : "^29.6.3" ,
"jest-snapshot" : "^29.7.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-runner" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz" ,
"integrity" : "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==" ,
"dev" : true ,
"dependencies" : {
"@jest/console" : "^29.7.0" ,
"@jest/environment" : "^29.7.0" ,
"@jest/test-result" : "^29.7.0" ,
"@jest/transform" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"@types/node" : "*" ,
"chalk" : "^4.0.0" ,
"emittery" : "^0.13.1" ,
"graceful-fs" : "^4.2.9" ,
"jest-docblock" : "^29.7.0" ,
"jest-environment-node" : "^29.7.0" ,
"jest-haste-map" : "^29.7.0" ,
"jest-leak-detector" : "^29.7.0" ,
"jest-message-util" : "^29.7.0" ,
"jest-resolve" : "^29.7.0" ,
"jest-runtime" : "^29.7.0" ,
"jest-util" : "^29.7.0" ,
"jest-watcher" : "^29.7.0" ,
"jest-worker" : "^29.7.0" ,
"p-limit" : "^3.1.0" ,
"source-map-support" : "0.5.13"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-runtime" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz" ,
"integrity" : "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==" ,
"dev" : true ,
"dependencies" : {
"@jest/environment" : "^29.7.0" ,
"@jest/fake-timers" : "^29.7.0" ,
"@jest/globals" : "^29.7.0" ,
"@jest/source-map" : "^29.6.3" ,
"@jest/test-result" : "^29.7.0" ,
"@jest/transform" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"@types/node" : "*" ,
"chalk" : "^4.0.0" ,
"cjs-module-lexer" : "^1.0.0" ,
"collect-v8-coverage" : "^1.0.0" ,
"glob" : "^7.1.3" ,
"graceful-fs" : "^4.2.9" ,
"jest-haste-map" : "^29.7.0" ,
"jest-message-util" : "^29.7.0" ,
"jest-mock" : "^29.7.0" ,
"jest-regex-util" : "^29.6.3" ,
"jest-resolve" : "^29.7.0" ,
"jest-snapshot" : "^29.7.0" ,
"jest-util" : "^29.7.0" ,
"slash" : "^3.0.0" ,
"strip-bom" : "^4.0.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-snapshot" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" ,
"integrity" : "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==" ,
"dev" : true ,
"dependencies" : {
"@babel/core" : "^7.11.6" ,
"@babel/generator" : "^7.7.2" ,
"@babel/plugin-syntax-jsx" : "^7.7.2" ,
"@babel/plugin-syntax-typescript" : "^7.7.2" ,
"@babel/types" : "^7.3.3" ,
"@jest/expect-utils" : "^29.7.0" ,
"@jest/transform" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"babel-preset-current-node-syntax" : "^1.0.0" ,
"chalk" : "^4.0.0" ,
"expect" : "^29.7.0" ,
"graceful-fs" : "^4.2.9" ,
"jest-diff" : "^29.7.0" ,
"jest-get-type" : "^29.6.3" ,
"jest-matcher-utils" : "^29.7.0" ,
"jest-message-util" : "^29.7.0" ,
"jest-util" : "^29.7.0" ,
"natural-compare" : "^1.4.0" ,
"pretty-format" : "^29.7.0" ,
"semver" : "^7.5.3"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-snapshot/node_modules/semver" : {
"version" : "7.7.4" ,
"resolved" : "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz" ,
"integrity" : "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==" ,
"dev" : true ,
"bin" : {
"semver" : "bin/semver.js"
} ,
"engines" : {
"node" : ">=10"
}
} ,
"node_modules/jest-util" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" ,
"integrity" : "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==" ,
"dev" : true ,
"dependencies" : {
"@jest/types" : "^29.6.3" ,
"@types/node" : "*" ,
"chalk" : "^4.0.0" ,
"ci-info" : "^3.2.0" ,
"graceful-fs" : "^4.2.9" ,
"picomatch" : "^2.2.3"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-validate" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" ,
"integrity" : "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==" ,
"dev" : true ,
"dependencies" : {
"@jest/types" : "^29.6.3" ,
"camelcase" : "^6.2.0" ,
"chalk" : "^4.0.0" ,
"jest-get-type" : "^29.6.3" ,
"leven" : "^3.1.0" ,
"pretty-format" : "^29.7.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-validate/node_modules/camelcase" : {
"version" : "6.3.0" ,
"resolved" : "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" ,
"integrity" : "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" ,
"dev" : true ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/jest-watcher" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz" ,
"integrity" : "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==" ,
"dev" : true ,
"dependencies" : {
"@jest/test-result" : "^29.7.0" ,
"@jest/types" : "^29.6.3" ,
"@types/node" : "*" ,
"ansi-escapes" : "^4.2.1" ,
"chalk" : "^4.0.0" ,
"emittery" : "^0.13.1" ,
"jest-util" : "^29.7.0" ,
"string-length" : "^4.0.1"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-worker" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" ,
"integrity" : "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==" ,
"dev" : true ,
"dependencies" : {
"@types/node" : "*" ,
"jest-util" : "^29.7.0" ,
"merge-stream" : "^2.0.0" ,
"supports-color" : "^8.0.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/jest-worker/node_modules/supports-color" : {
"version" : "8.1.1" ,
"resolved" : "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" ,
"integrity" : "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" ,
"dev" : true ,
"dependencies" : {
"has-flag" : "^4.0.0"
} ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/chalk/supports-color?sponsor=1"
}
} ,
"node_modules/js-tokens" : {
"version" : "4.0.0" ,
"resolved" : "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" ,
"integrity" : "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" ,
"dev" : true
} ,
"node_modules/js-yaml" : {
"version" : "4.1.1" ,
"resolved" : "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz" ,
"integrity" : "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==" ,
"dev" : true ,
"dependencies" : {
"argparse" : "^2.0.1"
} ,
"bin" : {
"js-yaml" : "bin/js-yaml.js"
}
} ,
"node_modules/jsesc" : {
"version" : "3.1.0" ,
"resolved" : "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" ,
"integrity" : "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==" ,
"dev" : true ,
"bin" : {
"jsesc" : "bin/jsesc"
} ,
"engines" : {
"node" : ">=6"
}
} ,
"node_modules/json-buffer" : {
"version" : "3.0.1" ,
"resolved" : "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" ,
"integrity" : "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" ,
"dev" : true
} ,
"node_modules/json-parse-even-better-errors" : {
"version" : "2.3.1" ,
"resolved" : "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" ,
"integrity" : "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" ,
"dev" : true
} ,
"node_modules/json-schema-traverse" : {
"version" : "0.4.1" ,
"resolved" : "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" ,
"integrity" : "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" ,
"dev" : true
} ,
"node_modules/json-stable-stringify-without-jsonify" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" ,
"integrity" : "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" ,
"dev" : true
} ,
"node_modules/json5" : {
"version" : "2.2.3" ,
"resolved" : "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" ,
"integrity" : "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" ,
"dev" : true ,
"bin" : {
"json5" : "lib/cli.js"
} ,
"engines" : {
"node" : ">=6"
}
} ,
"node_modules/keyv" : {
"version" : "4.5.4" ,
"resolved" : "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" ,
"integrity" : "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==" ,
"dev" : true ,
"dependencies" : {
"json-buffer" : "3.0.1"
}
} ,
"node_modules/kleur" : {
"version" : "3.0.3" ,
"resolved" : "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" ,
"integrity" : "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" ,
"dev" : true ,
"engines" : {
"node" : ">=6"
}
} ,
"node_modules/leven" : {
"version" : "3.1.0" ,
"resolved" : "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" ,
"integrity" : "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" ,
"dev" : true ,
"engines" : {
"node" : ">=6"
}
} ,
"node_modules/levn" : {
"version" : "0.4.1" ,
"resolved" : "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" ,
"integrity" : "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" ,
"dev" : true ,
"dependencies" : {
"prelude-ls" : "^1.2.1" ,
"type-check" : "~0.4.0"
} ,
"engines" : {
"node" : ">= 0.8.0"
}
} ,
"node_modules/lines-and-columns" : {
"version" : "1.2.4" ,
"resolved" : "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" ,
"integrity" : "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" ,
"dev" : true
} ,
"node_modules/locate-path" : {
"version" : "6.0.0" ,
"resolved" : "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" ,
"integrity" : "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" ,
"dev" : true ,
"dependencies" : {
"p-locate" : "^5.0.0"
} ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/lodash.merge" : {
"version" : "4.6.2" ,
"resolved" : "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" ,
2026-05-28 09:15:30 +02:00
"integrity" : "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
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
} ,
"node_modules/lru-cache" : {
"version" : "5.1.1" ,
"resolved" : "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" ,
"integrity" : "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" ,
"dev" : true ,
"dependencies" : {
"yallist" : "^3.0.2"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/magic-string" : {
"version" : "0.30.21" ,
"resolved" : "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz" ,
"integrity" : "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==" ,
"license" : "MIT" ,
"dependencies" : {
"@jridgewell/sourcemap-codec" : "^1.5.5"
}
} ,
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
"node_modules/make-dir" : {
"version" : "4.0.0" ,
"resolved" : "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" ,
"integrity" : "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==" ,
"dev" : true ,
"dependencies" : {
"semver" : "^7.5.3"
} ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/make-dir/node_modules/semver" : {
"version" : "7.7.4" ,
"resolved" : "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz" ,
"integrity" : "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==" ,
"dev" : true ,
"bin" : {
"semver" : "bin/semver.js"
} ,
"engines" : {
"node" : ">=10"
}
} ,
"node_modules/makeerror" : {
"version" : "1.0.12" ,
"resolved" : "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" ,
"integrity" : "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==" ,
"dev" : true ,
"dependencies" : {
"tmpl" : "1.0.5"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/math-intrinsics" : {
"version" : "1.1.0" ,
"resolved" : "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" ,
"integrity" : "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.4"
}
} ,
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
"node_modules/mathjs" : {
"version" : "13.2.3" ,
"resolved" : "https://registry.npmjs.org/mathjs/-/mathjs-13.2.3.tgz" ,
"integrity" : "sha512-I67Op0JU7gGykFK64bJexkSAmX498x0oybxfVXn1rroEMZTmfxppORhnk8mEUnPrbTfabDKCqvm18vJKMk2UJQ==" ,
"license" : "Apache-2.0" ,
"dependencies" : {
"@babel/runtime" : "^7.25.7" ,
"complex.js" : "^2.2.5" ,
"decimal.js" : "^10.4.3" ,
"escape-latex" : "^1.2.0" ,
"fraction.js" : "^4.3.7" ,
"javascript-natural-sort" : "^0.7.1" ,
"seedrandom" : "^3.0.5" ,
"tiny-emitter" : "^2.1.0" ,
"typed-function" : "^4.2.1"
} ,
"bin" : {
"mathjs" : "bin/cli.js"
} ,
"engines" : {
"node" : ">= 18"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/media-typer" : {
"version" : "0.3.0" ,
"resolved" : "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" ,
"integrity" : "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.6"
}
} ,
"node_modules/merge-descriptors" : {
"version" : "1.0.3" ,
"resolved" : "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" ,
"integrity" : "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" ,
"license" : "MIT" ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
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
"node_modules/merge-stream" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" ,
"integrity" : "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/methods" : {
"version" : "1.1.2" ,
"resolved" : "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" ,
"integrity" : "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.6"
}
} ,
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
"node_modules/micromatch" : {
"version" : "4.0.8" ,
"resolved" : "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" ,
"integrity" : "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==" ,
"dev" : true ,
"dependencies" : {
"braces" : "^3.0.3" ,
"picomatch" : "^2.3.1"
} ,
"engines" : {
"node" : ">=8.6"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/mime" : {
"version" : "1.6.0" ,
"resolved" : "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" ,
"integrity" : "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" ,
"license" : "MIT" ,
"bin" : {
"mime" : "cli.js"
} ,
"engines" : {
"node" : ">=4"
}
} ,
"node_modules/mime-db" : {
"version" : "1.52.0" ,
"resolved" : "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" ,
"integrity" : "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.6"
}
} ,
"node_modules/mime-types" : {
"version" : "2.1.35" ,
"resolved" : "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" ,
"integrity" : "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" ,
"license" : "MIT" ,
"dependencies" : {
"mime-db" : "1.52.0"
} ,
"engines" : {
"node" : ">= 0.6"
}
} ,
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
"node_modules/mimic-fn" : {
"version" : "2.1.0" ,
"resolved" : "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" ,
"integrity" : "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" ,
"dev" : true ,
"engines" : {
"node" : ">=6"
}
} ,
"node_modules/minimatch" : {
"version" : "3.1.5" ,
"resolved" : "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz" ,
"integrity" : "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==" ,
"dev" : true ,
"dependencies" : {
"brace-expansion" : "^1.1.7"
} ,
"engines" : {
"node" : "*"
}
} ,
"node_modules/ms" : {
"version" : "2.1.3" ,
"resolved" : "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" ,
2026-05-28 09:15:30 +02:00
"integrity" : "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
} ,
"node_modules/nanoid" : {
"version" : "3.3.12" ,
"resolved" : "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz" ,
"integrity" : "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==" ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
] ,
"license" : "MIT" ,
"bin" : {
"nanoid" : "bin/nanoid.cjs"
} ,
"engines" : {
"node" : "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
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
} ,
"node_modules/natural-compare" : {
"version" : "1.4.0" ,
"resolved" : "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" ,
"integrity" : "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/negotiator" : {
"version" : "0.6.3" ,
"resolved" : "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" ,
"integrity" : "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.6"
}
} ,
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
"node_modules/node-int64" : {
"version" : "0.4.0" ,
"resolved" : "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" ,
"integrity" : "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" ,
"dev" : true
} ,
"node_modules/node-releases" : {
"version" : "2.0.36" ,
"resolved" : "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz" ,
"integrity" : "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==" ,
"dev" : true
} ,
"node_modules/normalize-path" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" ,
"integrity" : "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" ,
"dev" : true ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/npm-run-path" : {
"version" : "4.0.1" ,
"resolved" : "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" ,
"integrity" : "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" ,
"dev" : true ,
"dependencies" : {
"path-key" : "^3.0.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/object-assign" : {
"version" : "4.1.1" ,
"resolved" : "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" ,
"integrity" : "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
"node_modules/object-inspect" : {
"version" : "1.13.4" ,
"resolved" : "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz" ,
"integrity" : "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
"node_modules/on-finished" : {
"version" : "2.4.1" ,
"resolved" : "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" ,
"integrity" : "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" ,
"license" : "MIT" ,
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
"dependencies" : {
2026-05-28 09:15:30 +02:00
"ee-first" : "1.1.1"
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
} ,
"engines" : {
2026-05-28 09:15:30 +02:00
"node" : ">= 0.8"
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
}
} ,
"node_modules/once" : {
"version" : "1.4.0" ,
"resolved" : "https://registry.npmjs.org/once/-/once-1.4.0.tgz" ,
"integrity" : "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" ,
"dev" : true ,
"dependencies" : {
"wrappy" : "1"
}
} ,
"node_modules/onetime" : {
"version" : "5.1.2" ,
"resolved" : "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" ,
"integrity" : "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" ,
"dev" : true ,
"dependencies" : {
"mimic-fn" : "^2.1.0"
} ,
"engines" : {
"node" : ">=6"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/optionator" : {
"version" : "0.9.4" ,
"resolved" : "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" ,
"integrity" : "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==" ,
"dev" : true ,
"dependencies" : {
"deep-is" : "^0.1.3" ,
"fast-levenshtein" : "^2.0.6" ,
"levn" : "^0.4.1" ,
"prelude-ls" : "^1.2.1" ,
"type-check" : "^0.4.0" ,
"word-wrap" : "^1.2.5"
} ,
"engines" : {
"node" : ">= 0.8.0"
}
} ,
"node_modules/p-limit" : {
"version" : "3.1.0" ,
"resolved" : "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" ,
"integrity" : "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" ,
"dev" : true ,
"dependencies" : {
"yocto-queue" : "^0.1.0"
} ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/p-locate" : {
"version" : "5.0.0" ,
"resolved" : "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" ,
"integrity" : "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" ,
"dev" : true ,
"dependencies" : {
"p-limit" : "^3.0.2"
} ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/p-try" : {
"version" : "2.2.0" ,
"resolved" : "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" ,
"integrity" : "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" ,
"dev" : true ,
"engines" : {
"node" : ">=6"
}
} ,
"node_modules/parent-module" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" ,
"integrity" : "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" ,
"dev" : true ,
"dependencies" : {
"callsites" : "^3.0.0"
} ,
"engines" : {
"node" : ">=6"
}
} ,
"node_modules/parse-json" : {
"version" : "5.2.0" ,
"resolved" : "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" ,
"integrity" : "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" ,
"dev" : true ,
"dependencies" : {
"@babel/code-frame" : "^7.0.0" ,
"error-ex" : "^1.3.1" ,
"json-parse-even-better-errors" : "^2.3.0" ,
"lines-and-columns" : "^1.1.6"
} ,
"engines" : {
"node" : ">=8"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/parseurl" : {
"version" : "1.3.3" ,
"resolved" : "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" ,
"integrity" : "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.8"
}
} ,
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
"node_modules/path-exists" : {
"version" : "4.0.0" ,
"resolved" : "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" ,
"integrity" : "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/path-is-absolute" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" ,
"integrity" : "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" ,
"dev" : true ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
"node_modules/path-key" : {
"version" : "3.1.1" ,
"resolved" : "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" ,
"integrity" : "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/path-parse" : {
"version" : "1.0.7" ,
"resolved" : "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" ,
"integrity" : "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" ,
"dev" : true
} ,
2026-05-28 09:15:30 +02:00
"node_modules/path-to-regexp" : {
"version" : "0.1.13" ,
"resolved" : "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz" ,
"integrity" : "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==" ,
"license" : "MIT"
} ,
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
"node_modules/picocolors" : {
"version" : "1.1.1" ,
"resolved" : "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" ,
2026-05-28 09:15:30 +02:00
"integrity" : "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
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
} ,
"node_modules/picomatch" : {
"version" : "2.3.1" ,
"resolved" : "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" ,
"integrity" : "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" ,
"dev" : true ,
"engines" : {
"node" : ">=8.6"
} ,
"funding" : {
"url" : "https://github.com/sponsors/jonschlinkert"
}
} ,
"node_modules/pirates" : {
"version" : "4.0.7" ,
"resolved" : "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz" ,
"integrity" : "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==" ,
"dev" : true ,
"engines" : {
"node" : ">= 6"
}
} ,
"node_modules/pkg-dir" : {
"version" : "4.2.0" ,
"resolved" : "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" ,
"integrity" : "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" ,
"dev" : true ,
"dependencies" : {
"find-up" : "^4.0.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/pkg-dir/node_modules/find-up" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" ,
"integrity" : "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" ,
"dev" : true ,
"dependencies" : {
"locate-path" : "^5.0.0" ,
"path-exists" : "^4.0.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/pkg-dir/node_modules/locate-path" : {
"version" : "5.0.0" ,
"resolved" : "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" ,
"integrity" : "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" ,
"dev" : true ,
"dependencies" : {
"p-locate" : "^4.1.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/pkg-dir/node_modules/p-limit" : {
"version" : "2.3.0" ,
"resolved" : "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" ,
"integrity" : "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" ,
"dev" : true ,
"dependencies" : {
"p-try" : "^2.0.0"
} ,
"engines" : {
"node" : ">=6"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
2025-05-27 15:10:55 +02:00
}
} ,
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
"node_modules/pkg-dir/node_modules/p-locate" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" ,
"integrity" : "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" ,
"dev" : true ,
"dependencies" : {
"p-limit" : "^2.2.0"
} ,
2025-05-27 15:10:55 +02:00
"engines" : {
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
"node" : ">=8"
2025-05-27 15:10:55 +02:00
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/postcss" : {
"version" : "8.5.14" ,
"resolved" : "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz" ,
"integrity" : "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==" ,
"funding" : [
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/postcss/"
} ,
{
"type" : "tidelift" ,
"url" : "https://tidelift.com/funding/github/npm/postcss"
} ,
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
] ,
"license" : "MIT" ,
"dependencies" : {
"nanoid" : "^3.3.11" ,
"picocolors" : "^1.1.1" ,
"source-map-js" : "^1.2.1"
} ,
"engines" : {
"node" : "^10 || ^12 || >=14"
}
} ,
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
"node_modules/prelude-ls" : {
"version" : "1.2.1" ,
"resolved" : "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" ,
"integrity" : "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" ,
"dev" : true ,
2025-05-27 15:10:55 +02:00
"engines" : {
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
"node" : ">= 0.8.0"
}
} ,
"node_modules/pretty-format" : {
"version" : "29.7.0" ,
"resolved" : "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" ,
"integrity" : "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==" ,
"dev" : true ,
"dependencies" : {
"@jest/schemas" : "^29.6.3" ,
"ansi-styles" : "^5.0.0" ,
"react-is" : "^18.0.0"
} ,
"engines" : {
"node" : "^14.15.0 || ^16.10.0 || >=18.0.0"
}
} ,
"node_modules/pretty-format/node_modules/ansi-styles" : {
"version" : "5.2.0" ,
"resolved" : "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" ,
"integrity" : "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" ,
"dev" : true ,
"engines" : {
"node" : ">=10"
2025-05-27 15:10:55 +02:00
} ,
"funding" : {
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
"url" : "https://github.com/chalk/ansi-styles?sponsor=1"
2025-05-27 15:10:55 +02:00
}
} ,
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
"node_modules/prompts" : {
"version" : "2.4.2" ,
"resolved" : "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" ,
"integrity" : "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" ,
"dev" : true ,
"dependencies" : {
"kleur" : "^3.0.3" ,
"sisteransi" : "^1.0.5"
} ,
"engines" : {
"node" : ">= 6"
}
2025-05-27 15:10:55 +02:00
} ,
2026-05-28 09:15:30 +02:00
"node_modules/proxy-addr" : {
"version" : "2.0.7" ,
"resolved" : "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" ,
"integrity" : "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" ,
"license" : "MIT" ,
"dependencies" : {
"forwarded" : "0.2.0" ,
"ipaddr.js" : "1.9.1"
} ,
"engines" : {
"node" : ">= 0.10"
}
} ,
"node_modules/proxy-from-env" : {
"version" : "2.1.0" ,
"resolved" : "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz" ,
"integrity" : "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">=10"
}
} ,
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
"node_modules/punycode" : {
"version" : "2.3.1" ,
"resolved" : "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" ,
"integrity" : "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" ,
"dev" : true ,
"engines" : {
"node" : ">=6"
}
2025-05-27 15:10:55 +02:00
} ,
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
"node_modules/pure-rand" : {
"version" : "6.1.0" ,
"resolved" : "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz" ,
"integrity" : "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==" ,
"dev" : true ,
"funding" : [
{
"type" : "individual" ,
"url" : "https://github.com/sponsors/dubzzz"
} ,
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/fast-check"
}
]
} ,
2026-05-28 09:15:30 +02:00
"node_modules/qs" : {
"version" : "6.15.1" ,
"resolved" : "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz" ,
"integrity" : "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==" ,
"license" : "BSD-3-Clause" ,
"dependencies" : {
"side-channel" : "^1.1.0"
} ,
"engines" : {
"node" : ">=0.6"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
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
"node_modules/queue-microtask" : {
"version" : "1.2.3" ,
"resolved" : "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" ,
"integrity" : "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" ,
"dev" : true ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/feross"
} ,
{
"type" : "patreon" ,
"url" : "https://www.patreon.com/feross"
} ,
{
"type" : "consulting" ,
"url" : "https://feross.org/support"
}
]
} ,
2026-05-28 09:15:30 +02:00
"node_modules/range-parser" : {
"version" : "1.2.1" ,
"resolved" : "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" ,
"integrity" : "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.6"
}
} ,
"node_modules/raw-body" : {
"version" : "2.5.3" ,
"resolved" : "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz" ,
"integrity" : "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==" ,
"license" : "MIT" ,
"dependencies" : {
"bytes" : "~3.1.2" ,
"http-errors" : "~2.0.1" ,
"iconv-lite" : "~0.4.24" ,
"unpipe" : "~1.0.0"
} ,
"engines" : {
"node" : ">= 0.8"
}
} ,
"node_modules/raw-body/node_modules/iconv-lite" : {
"version" : "0.4.24" ,
"resolved" : "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" ,
"integrity" : "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" ,
"license" : "MIT" ,
"dependencies" : {
"safer-buffer" : ">= 2.1.2 < 3"
} ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
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
"node_modules/react-is" : {
"version" : "18.3.1" ,
"resolved" : "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" ,
"integrity" : "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" ,
"dev" : true
} ,
"node_modules/require-directory" : {
"version" : "2.1.1" ,
"resolved" : "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" ,
"integrity" : "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" ,
"dev" : true ,
2025-05-27 15:10:55 +02:00
"engines" : {
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
"node" : ">=0.10.0"
}
} ,
"node_modules/resolve" : {
"version" : "1.22.11" ,
"resolved" : "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz" ,
"integrity" : "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==" ,
"dev" : true ,
"dependencies" : {
"is-core-module" : "^2.16.1" ,
"path-parse" : "^1.0.7" ,
"supports-preserve-symlinks-flag" : "^1.0.0"
} ,
"bin" : {
"resolve" : "bin/resolve"
} ,
"engines" : {
"node" : ">= 0.4"
2025-05-27 15:10:55 +02:00
} ,
"funding" : {
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
"url" : "https://github.com/sponsors/ljharb"
2025-05-27 15:10:55 +02:00
}
} ,
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
"node_modules/resolve-cwd" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" ,
"integrity" : "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==" ,
"dev" : true ,
"dependencies" : {
"resolve-from" : "^5.0.0"
} ,
"engines" : {
"node" : ">=8"
}
2025-06-10 17:49:02 +02:00
} ,
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
"node_modules/resolve-cwd/node_modules/resolve-from" : {
"version" : "5.0.0" ,
"resolved" : "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" ,
"integrity" : "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
2025-05-27 15:10:55 +02:00
} ,
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
"node_modules/resolve-from" : {
"version" : "4.0.0" ,
"resolved" : "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" ,
"integrity" : "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" ,
"dev" : true ,
"engines" : {
"node" : ">=4"
}
} ,
"node_modules/resolve.exports" : {
"version" : "2.0.3" ,
"resolved" : "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz" ,
"integrity" : "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==" ,
"dev" : true ,
"engines" : {
"node" : ">=10"
}
} ,
"node_modules/reusify" : {
"version" : "1.1.0" ,
"resolved" : "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz" ,
"integrity" : "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==" ,
"dev" : true ,
"engines" : {
"iojs" : ">=1.0.0" ,
"node" : ">=0.10.0"
}
} ,
"node_modules/rimraf" : {
"version" : "3.0.2" ,
"resolved" : "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" ,
"integrity" : "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" ,
"deprecated" : "Rimraf versions prior to v4 are no longer supported" ,
"dev" : true ,
2025-05-27 15:10:55 +02:00
"dependencies" : {
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
"glob" : "^7.1.3"
2025-05-27 15:10:55 +02:00
} ,
"bin" : {
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
"rimraf" : "bin.js"
2025-05-27 15:10:55 +02:00
} ,
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
"funding" : {
"url" : "https://github.com/sponsors/isaacs"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/robust-predicates" : {
"version" : "3.0.3" ,
"resolved" : "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz" ,
"integrity" : "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==" ,
"license" : "Unlicense"
} ,
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
"node_modules/run-parallel" : {
"version" : "1.2.0" ,
"resolved" : "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" ,
"integrity" : "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" ,
"dev" : true ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/feross"
} ,
{
"type" : "patreon" ,
"url" : "https://www.patreon.com/feross"
} ,
{
"type" : "consulting" ,
"url" : "https://feross.org/support"
}
] ,
"dependencies" : {
"queue-microtask" : "^1.2.2"
2025-05-27 15:10:55 +02:00
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/rw" : {
"version" : "1.3.3" ,
"resolved" : "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz" ,
"integrity" : "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" ,
"license" : "BSD-3-Clause"
} ,
"node_modules/safe-buffer" : {
"version" : "5.2.1" ,
"resolved" : "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" ,
"integrity" : "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/feross"
} ,
{
"type" : "patreon" ,
"url" : "https://www.patreon.com/feross"
} ,
{
"type" : "consulting" ,
"url" : "https://feross.org/support"
}
] ,
"license" : "MIT"
} ,
"node_modules/safer-buffer" : {
"version" : "2.1.2" ,
"resolved" : "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" ,
"integrity" : "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" ,
"license" : "MIT"
} ,
2025-05-27 15:10:55 +02:00
"node_modules/seedrandom" : {
"version" : "3.0.5" ,
"resolved" : "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz" ,
"integrity" : "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" ,
"license" : "MIT"
} ,
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
"node_modules/semver" : {
"version" : "6.3.1" ,
"resolved" : "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" ,
"integrity" : "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" ,
"dev" : true ,
"bin" : {
"semver" : "bin/semver.js"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/send" : {
"version" : "0.19.2" ,
"resolved" : "https://registry.npmjs.org/send/-/send-0.19.2.tgz" ,
"integrity" : "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==" ,
"license" : "MIT" ,
"dependencies" : {
"debug" : "2.6.9" ,
"depd" : "2.0.0" ,
"destroy" : "1.2.0" ,
"encodeurl" : "~2.0.0" ,
"escape-html" : "~1.0.3" ,
"etag" : "~1.8.1" ,
"fresh" : "~0.5.2" ,
"http-errors" : "~2.0.1" ,
"mime" : "1.6.0" ,
"ms" : "2.1.3" ,
"on-finished" : "~2.4.1" ,
"range-parser" : "~1.2.1" ,
"statuses" : "~2.0.2"
} ,
"engines" : {
"node" : ">= 0.8.0"
}
} ,
"node_modules/send/node_modules/debug" : {
"version" : "2.6.9" ,
"resolved" : "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" ,
"integrity" : "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" ,
"license" : "MIT" ,
"dependencies" : {
"ms" : "2.0.0"
}
} ,
"node_modules/send/node_modules/debug/node_modules/ms" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" ,
"integrity" : "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" ,
"license" : "MIT"
} ,
"node_modules/serve-static" : {
"version" : "1.16.3" ,
"resolved" : "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz" ,
"integrity" : "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==" ,
"license" : "MIT" ,
"dependencies" : {
"encodeurl" : "~2.0.0" ,
"escape-html" : "~1.0.3" ,
"parseurl" : "~1.3.3" ,
"send" : "~0.19.1"
} ,
"engines" : {
"node" : ">= 0.8.0"
}
} ,
"node_modules/setprototypeof" : {
"version" : "1.2.0" ,
"resolved" : "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" ,
"integrity" : "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" ,
"license" : "ISC"
} ,
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
"node_modules/shebang-command" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" ,
"integrity" : "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" ,
"dev" : true ,
"dependencies" : {
"shebang-regex" : "^3.0.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/shebang-regex" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" ,
"integrity" : "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/side-channel" : {
"version" : "1.1.0" ,
"resolved" : "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" ,
"integrity" : "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==" ,
"license" : "MIT" ,
"dependencies" : {
"es-errors" : "^1.3.0" ,
"object-inspect" : "^1.13.3" ,
"side-channel-list" : "^1.0.0" ,
"side-channel-map" : "^1.0.1" ,
"side-channel-weakmap" : "^1.0.2"
} ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
"node_modules/side-channel-list" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz" ,
"integrity" : "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==" ,
"license" : "MIT" ,
"dependencies" : {
"es-errors" : "^1.3.0" ,
"object-inspect" : "^1.13.4"
} ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
"node_modules/side-channel-map" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" ,
"integrity" : "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==" ,
"license" : "MIT" ,
"dependencies" : {
"call-bound" : "^1.0.2" ,
"es-errors" : "^1.3.0" ,
"get-intrinsic" : "^1.2.5" ,
"object-inspect" : "^1.13.3"
} ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
"node_modules/side-channel-weakmap" : {
"version" : "1.0.2" ,
"resolved" : "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" ,
"integrity" : "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==" ,
"license" : "MIT" ,
"dependencies" : {
"call-bound" : "^1.0.2" ,
"es-errors" : "^1.3.0" ,
"get-intrinsic" : "^1.2.5" ,
"object-inspect" : "^1.13.3" ,
"side-channel-map" : "^1.0.1"
} ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
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
"node_modules/signal-exit" : {
"version" : "3.0.7" ,
"resolved" : "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" ,
"integrity" : "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" ,
"dev" : true
} ,
"node_modules/sisteransi" : {
"version" : "1.0.5" ,
"resolved" : "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" ,
"integrity" : "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" ,
"dev" : true
} ,
"node_modules/slash" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" ,
"integrity" : "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/socket.io" : {
"version" : "4.8.3" ,
"resolved" : "https://registry.npmjs.org/socket.io/-/socket.io-4.8.3.tgz" ,
"integrity" : "sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==" ,
"license" : "MIT" ,
"dependencies" : {
"accepts" : "~1.3.4" ,
"base64id" : "~2.0.0" ,
"cors" : "~2.8.5" ,
"debug" : "~4.4.1" ,
"engine.io" : "~6.6.0" ,
"socket.io-adapter" : "~2.5.2" ,
"socket.io-parser" : "~4.2.4"
} ,
"engines" : {
"node" : ">=10.2.0"
}
} ,
"node_modules/socket.io-adapter" : {
"version" : "2.5.6" ,
"resolved" : "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.6.tgz" ,
"integrity" : "sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==" ,
"license" : "MIT" ,
"dependencies" : {
"debug" : "~4.4.1" ,
"ws" : "~8.18.3"
}
} ,
"node_modules/socket.io-parser" : {
"version" : "4.2.6" ,
"resolved" : "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz" ,
"integrity" : "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==" ,
"license" : "MIT" ,
"dependencies" : {
"@socket.io/component-emitter" : "~3.1.0" ,
"debug" : "~4.4.1"
} ,
"engines" : {
"node" : ">=10.0.0"
}
} ,
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
"node_modules/source-map" : {
"version" : "0.6.1" ,
"resolved" : "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" ,
"integrity" : "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" ,
2026-05-28 09:15:30 +02:00
"devOptional" : true ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
"node_modules/source-map-js" : {
"version" : "1.2.1" ,
"resolved" : "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" ,
"integrity" : "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" ,
"license" : "BSD-3-Clause" ,
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
"engines" : {
"node" : ">=0.10.0"
}
} ,
"node_modules/source-map-support" : {
"version" : "0.5.13" ,
"resolved" : "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" ,
"integrity" : "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==" ,
"dev" : true ,
"dependencies" : {
"buffer-from" : "^1.0.0" ,
"source-map" : "^0.6.0"
}
} ,
"node_modules/sprintf-js" : {
"version" : "1.0.3" ,
"resolved" : "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" ,
"integrity" : "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" ,
"dev" : true
} ,
"node_modules/stack-utils" : {
"version" : "2.0.6" ,
"resolved" : "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" ,
"integrity" : "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" ,
"dev" : true ,
"dependencies" : {
"escape-string-regexp" : "^2.0.0"
} ,
"engines" : {
"node" : ">=10"
}
} ,
"node_modules/stack-utils/node_modules/escape-string-regexp" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" ,
"integrity" : "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/statuses" : {
"version" : "2.0.2" ,
"resolved" : "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz" ,
"integrity" : "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.8"
}
} ,
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
"node_modules/string-length" : {
"version" : "4.0.2" ,
"resolved" : "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" ,
"integrity" : "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==" ,
"dev" : true ,
"dependencies" : {
"char-regex" : "^1.0.2" ,
"strip-ansi" : "^6.0.0"
} ,
"engines" : {
"node" : ">=10"
}
} ,
"node_modules/string-width" : {
"version" : "4.2.3" ,
"resolved" : "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" ,
"integrity" : "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" ,
"dev" : true ,
"dependencies" : {
"emoji-regex" : "^8.0.0" ,
"is-fullwidth-code-point" : "^3.0.0" ,
"strip-ansi" : "^6.0.1"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/strip-ansi" : {
"version" : "6.0.1" ,
"resolved" : "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" ,
"integrity" : "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" ,
"dev" : true ,
"dependencies" : {
"ansi-regex" : "^5.0.1"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/strip-bom" : {
"version" : "4.0.0" ,
"resolved" : "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" ,
"integrity" : "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/strip-final-newline" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" ,
"integrity" : "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" ,
"dev" : true ,
"engines" : {
"node" : ">=6"
}
} ,
"node_modules/strip-json-comments" : {
"version" : "3.1.1" ,
"resolved" : "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" ,
"integrity" : "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" ,
"dev" : true ,
"engines" : {
"node" : ">=8"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/supports-color" : {
"version" : "7.2.0" ,
"resolved" : "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" ,
"integrity" : "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" ,
"dev" : true ,
"dependencies" : {
"has-flag" : "^4.0.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/supports-preserve-symlinks-flag" : {
"version" : "1.0.0" ,
"resolved" : "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" ,
"integrity" : "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" ,
"dev" : true ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
"node_modules/test-exclude" : {
"version" : "6.0.0" ,
"resolved" : "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" ,
"integrity" : "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" ,
"dev" : true ,
"dependencies" : {
"@istanbuljs/schema" : "^0.1.2" ,
"glob" : "^7.1.4" ,
"minimatch" : "^3.0.4"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/text-table" : {
"version" : "0.2.0" ,
"resolved" : "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" ,
"integrity" : "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" ,
"dev" : true
} ,
2025-05-27 15:10:55 +02:00
"node_modules/tiny-emitter" : {
"version" : "2.1.0" ,
"resolved" : "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz" ,
"integrity" : "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" ,
"license" : "MIT"
} ,
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
"node_modules/tmpl" : {
"version" : "1.0.5" ,
"resolved" : "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" ,
"integrity" : "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" ,
"dev" : true
} ,
"node_modules/to-regex-range" : {
"version" : "5.0.1" ,
"resolved" : "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" ,
"integrity" : "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" ,
"dev" : true ,
"dependencies" : {
"is-number" : "^7.0.0"
} ,
"engines" : {
"node" : ">=8.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/toidentifier" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" ,
"integrity" : "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">=0.6"
}
} ,
"node_modules/tslib" : {
"version" : "2.3.0" ,
"resolved" : "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" ,
"integrity" : "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" ,
"license" : "0BSD"
} ,
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
"node_modules/type-check" : {
"version" : "0.4.0" ,
"resolved" : "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" ,
"integrity" : "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" ,
"dev" : true ,
"dependencies" : {
"prelude-ls" : "^1.2.1"
} ,
"engines" : {
"node" : ">= 0.8.0"
}
} ,
"node_modules/type-detect" : {
"version" : "4.0.8" ,
"resolved" : "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" ,
"integrity" : "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" ,
"dev" : true ,
"engines" : {
"node" : ">=4"
}
} ,
"node_modules/type-fest" : {
"version" : "0.21.3" ,
"resolved" : "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" ,
"integrity" : "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" ,
"dev" : true ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/type-is" : {
"version" : "1.6.18" ,
"resolved" : "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" ,
"integrity" : "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" ,
"license" : "MIT" ,
"dependencies" : {
"media-typer" : "0.3.0" ,
"mime-types" : "~2.1.24"
} ,
"engines" : {
"node" : ">= 0.6"
}
} ,
2025-05-27 15:10:55 +02:00
"node_modules/typed-function" : {
"version" : "4.2.1" ,
"resolved" : "https://registry.npmjs.org/typed-function/-/typed-function-4.2.1.tgz" ,
"integrity" : "sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 18"
}
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
} ,
"node_modules/undici-types" : {
"version" : "7.18.2" ,
"resolved" : "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz" ,
2026-05-28 09:15:30 +02:00
"integrity" : "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="
} ,
"node_modules/unpipe" : {
"version" : "1.0.0" ,
"resolved" : "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" ,
"integrity" : "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.8"
}
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
} ,
"node_modules/update-browserslist-db" : {
"version" : "1.2.3" ,
"resolved" : "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz" ,
"integrity" : "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==" ,
"dev" : true ,
"funding" : [
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/browserslist"
} ,
{
"type" : "tidelift" ,
"url" : "https://tidelift.com/funding/github/npm/browserslist"
} ,
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
] ,
"dependencies" : {
"escalade" : "^3.2.0" ,
"picocolors" : "^1.1.1"
} ,
"bin" : {
"update-browserslist-db" : "cli.js"
} ,
"peerDependencies" : {
"browserslist" : ">= 4.21.0"
}
} ,
"node_modules/uri-js" : {
"version" : "4.4.1" ,
"resolved" : "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" ,
"integrity" : "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" ,
"dev" : true ,
"dependencies" : {
"punycode" : "^2.1.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/utils-merge" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" ,
"integrity" : "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.4.0"
}
} ,
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
"node_modules/v8-to-istanbul" : {
"version" : "9.3.0" ,
"resolved" : "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz" ,
"integrity" : "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==" ,
"dev" : true ,
"dependencies" : {
"@jridgewell/trace-mapping" : "^0.3.12" ,
"@types/istanbul-lib-coverage" : "^2.0.1" ,
"convert-source-map" : "^2.0.0"
} ,
"engines" : {
"node" : ">=10.12.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/vary" : {
"version" : "1.1.2" ,
"resolved" : "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" ,
"integrity" : "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.8"
}
} ,
"node_modules/vue" : {
"version" : "3.5.34" ,
"resolved" : "https://registry.npmjs.org/vue/-/vue-3.5.34.tgz" ,
"integrity" : "sha512-WdLBG9gm02OgJIG9axd5Hpx0TFLdzVgfG2evFFu8Rur5O/IoGc5cMjnjh3tPL6GnRGsYvUhBSKVPYVcxRKpMCA==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/compiler-dom" : "3.5.34" ,
"@vue/compiler-sfc" : "3.5.34" ,
"@vue/runtime-dom" : "3.5.34" ,
"@vue/server-renderer" : "3.5.34" ,
"@vue/shared" : "3.5.34"
} ,
"peerDependencies" : {
"typescript" : "*"
} ,
"peerDependenciesMeta" : {
"typescript" : {
"optional" : true
}
}
} ,
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
"node_modules/walker" : {
"version" : "1.0.8" ,
"resolved" : "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" ,
"integrity" : "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==" ,
"dev" : true ,
"dependencies" : {
"makeerror" : "1.0.12"
}
} ,
"node_modules/which" : {
"version" : "2.0.2" ,
"resolved" : "https://registry.npmjs.org/which/-/which-2.0.2.tgz" ,
"integrity" : "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" ,
"dev" : true ,
"dependencies" : {
"isexe" : "^2.0.0"
} ,
"bin" : {
"node-which" : "bin/node-which"
} ,
"engines" : {
"node" : ">= 8"
}
} ,
"node_modules/word-wrap" : {
"version" : "1.2.5" ,
"resolved" : "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" ,
"integrity" : "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" ,
"dev" : true ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
"node_modules/wrap-ansi" : {
"version" : "7.0.0" ,
"resolved" : "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" ,
"integrity" : "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" ,
"dev" : true ,
"dependencies" : {
"ansi-styles" : "^4.0.0" ,
"string-width" : "^4.1.0" ,
"strip-ansi" : "^6.0.0"
} ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/chalk/wrap-ansi?sponsor=1"
}
} ,
"node_modules/wrappy" : {
"version" : "1.0.2" ,
"resolved" : "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" ,
"integrity" : "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" ,
"dev" : true
} ,
"node_modules/write-file-atomic" : {
"version" : "4.0.2" ,
"resolved" : "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" ,
"integrity" : "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==" ,
"dev" : true ,
"dependencies" : {
"imurmurhash" : "^0.1.4" ,
"signal-exit" : "^3.0.7"
} ,
"engines" : {
"node" : "^12.13.0 || ^14.15.0 || >=16.0.0"
}
} ,
2026-05-28 09:15:30 +02:00
"node_modules/ws" : {
"version" : "8.18.3" ,
"resolved" : "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz" ,
"integrity" : "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">=10.0.0"
} ,
"peerDependencies" : {
"bufferutil" : "^4.0.1" ,
"utf-8-validate" : ">=5.0.2"
} ,
"peerDependenciesMeta" : {
"bufferutil" : {
"optional" : true
} ,
"utf-8-validate" : {
"optional" : true
}
}
} ,
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
"node_modules/y18n" : {
"version" : "5.0.8" ,
"resolved" : "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" ,
"integrity" : "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" ,
"dev" : true ,
"engines" : {
"node" : ">=10"
}
} ,
"node_modules/yallist" : {
"version" : "3.1.1" ,
"resolved" : "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" ,
"integrity" : "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" ,
"dev" : true
} ,
"node_modules/yargs" : {
"version" : "17.7.2" ,
"resolved" : "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" ,
"integrity" : "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==" ,
"dev" : true ,
"dependencies" : {
"cliui" : "^8.0.1" ,
"escalade" : "^3.1.1" ,
"get-caller-file" : "^2.0.5" ,
"require-directory" : "^2.1.1" ,
"string-width" : "^4.2.3" ,
"y18n" : "^5.0.5" ,
"yargs-parser" : "^21.1.1"
} ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/yargs-parser" : {
"version" : "21.1.1" ,
"resolved" : "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" ,
"integrity" : "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" ,
"dev" : true ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/yocto-queue" : {
"version" : "0.1.0" ,
"resolved" : "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" ,
"integrity" : "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" ,
"dev" : true ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
2026-05-28 09:15:30 +02:00
} ,
"node_modules/zrender" : {
"version" : "6.0.0" ,
"resolved" : "https://registry.npmjs.org/zrender/-/zrender-6.0.0.tgz" ,
"integrity" : "sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==" ,
"license" : "BSD-3-Clause" ,
"dependencies" : {
"tslib" : "2.3.0"
}
} ,
"nodes/generalFunctions" : {
"version" : "1.0.0" ,
"license" : "SEE LICENSE"
2025-05-27 15:10:55 +02:00
}
}
}