{"_id":"magicmirror","_rev":"17-0fd0e17f80936ea89e2a0a33734ff796","name":"magicmirror","dist-tags":{"latest":"2.37.0"},"versions":{"2.0.0":{"name":"magicmirror","version":"2.0.0","keywords":["magic mirror","smart mirror","mirror UI","modular"],"author":{"name":"Michael Teeuw"},"license":"MIT","_id":"magicmirror@2.0.0","maintainers":[{"name":"michmich","email":"michael@xonaymedia.nl"}],"contributors":"https://github.com/MichMich/MagicMirror/graphs/contributors","homepage":"https://github.com/MichMich/MagicMirror#readme","bugs":{"url":"https://github.com/MichMich/MagicMirror/issues"},"dist":{"shasum":"8ca6aaf39a4ea59dc756528f01876042f6622bef","tarball":"https://registry.npmjs.org/magicmirror/-/magicmirror-2.0.0.tgz","integrity":"sha512-AiSmvFmGXZuUe75eWuGbUF0X+zOWhFPuM8m62wYqa2xBbty9vo5VLvezbazYyBPKziE3PtTJdkfcc872u7i+jA==","signatures":[{"sig":"MEQCIHAxRVo73r3+bcxaa+K7Y7cmWv6WUIfqbSeLgzkLKKqjAiBmL0nGknx7n80e0cphl9kY7OyPSMAzjiAZzC/Y//pHzA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"js/electron.js","_from":".","_shasum":"8ca6aaf39a4ea59dc756528f01876042f6622bef","gitHead":"899d05bc3295bd3e8191952e3e28343bc168a863","scripts":{"start":"electron js/electron.js"},"_npmUser":{"name":"michmich","email":"michael@xonaymedia.nl"},"repository":{"url":"git+https://github.com/MichMich/MagicMirror.git","type":"git"},"_npmVersion":"3.6.0","description":"A modular interface for smart mirrors.","directories":{},"_nodeVersion":"5.6.0","dependencies":{"ical":"latest","walk":"latest","feedme":"latest","moment":"latest","express":"latest","request":"latest","socket.io":"latest","valid-url":"latest"},"devDependencies":{"electron-prebuilt":"latest"},"_npmOperationalInternal":{"tmp":"tmp/magicmirror-2.0.0.tgz_1459334666349_0.4462673820089549","host":"packages-16-east.internal.npmjs.com"}},"2.29.0":{"name":"magicmirror","version":"2.29.0","keywords":["magic mirror","magicmirror","smart mirror","mirror UI","modular"],"author":{"name":"Michael Teeuw"},"license":"MIT","_id":"magicmirror@2.29.0","maintainers":[{"name":"michmich","email":"michael@xonaymedia.nl"},{"name":"rejas","email":"npm@veeck.de"}],"contributors":[{"name":"https://github.com/MagicMirrorOrg/MagicMirror/graphs/contributors"}],"homepage":"https://magicmirror.builders","bugs":{"url":"https://github.com/MagicMirrorOrg/MagicMirror/issues"},"dist":{"shasum":"630cc0f39cd837f93338a2796d4f5140e7b02c3e","tarball":"https://registry.npmjs.org/magicmirror/-/magicmirror-2.29.0.tgz","fileCount":337,"integrity":"sha512-zJiUV6gwFuMZcR4n+DBMor1hEk3OeAOb2gTT+ZXgDYi+HZ9p++FR7Q91z6HiHX6enY/M6bMDgAccESSzSMHxJA==","signatures":[{"sig":"MEYCIQDKS3sWdi0qlWtegxWSbR7ClK+g3My0QfGPHZ9a7JzngAIhALRXB/xEQKT4Jb27+KACj7sXMC65YOw83FvU7iwO2BCZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1059793},"main":"js/electron.js","engines":{"node":">=20.9.0 <21 || 22"},"gitHead":"94c3c699e8bf89e0466580960d5d32b745dd940c","scripts":{"test":"NODE_ENV=test jest -i --forceExit","start":"DISPLAY=\"${DISPLAY:=:0}\" ./node_modules/.bin/electron js/electron.js","server":"node ./serveronly","lint:js":"eslint . --fix","prepare":"[ -f node_modules/.bin/husky ] && husky || echo no husky installed.","test:js":"eslint .","lint:css":"stylelint 'css/main.css' 'fonts/*.css' 'modules/default/**/*.css' 'vendor/*.css' --config .stylelintrc.json --fix","test:css":"stylelint 'css/main.css' 'fonts/*.css' 'modules/default/**/*.css' 'vendor/*.css' --config .stylelintrc.json","test:e2e":"NODE_ENV=test jest --selectProjects e2e -i --forceExit","start:dev":"DISPLAY=\"${DISPLAY:=:0}\" ./node_modules/.bin/electron js/electron.js dev","test:unit":"NODE_ENV=test jest --selectProjects unit","install-mm":"npm install --no-audit --no-fund --no-update-notifier --only=prod --omit=dev","lint:staged":"lint-staged","postinstall":"npm run install-vendor && npm run install-fonts && echo \"MagicMirror² installation finished successfully! \n\"","config:check":"node js/check_config.js","install-fonts":"echo \"Installing fonts ...\n\" && cd fonts && npm install --loglevel=error --no-audit --no-fund --no-update-notifier","lint:prettier":"prettier . --write","test:calendar":"node ./modules/default/calendar/debug.js","test:coverage":"NODE_ENV=test jest --coverage -i --verbose false --forceExit","test:electron":"NODE_ENV=test jest --selectProjects electron -i --forceExit","test:prettier":"prettier . --check","test:spelling":"cspell . --gitignore","install-mm:dev":"npm install --no-audit --no-fund --no-update-notifier","install-vendor":"echo \"Installing vendor files ...\n\" && cd vendor && npm install --loglevel=error --no-audit --no-fund --no-update-notifier"},"_npmUser":{"name":"rejas","email":"npm@veeck.de"},"repository":{"url":"git+https://github.com/MagicMirrorOrg/MagicMirror.git","type":"git"},"_npmVersion":"10.8.2","description":"The open source modular smart mirror platform.","directories":{},"lint-staged":{"*":"prettier --write","*.js":"eslint --fix","*.css":"stylelint --fix"},"_nodeVersion":"20.17.0","dependencies":{"ajv":"^8.17.1","pm2":"^5.4.2","ansis":"^3.3.2","envsub":"^4.1.0","eslint":"^9.11.1","feedme":"^2.0.2","helmet":"^7.1.0","moment":"^2.30.1","express":"^4.21.0","suncalc":"^1.9.0","node-ical":"0.18.0","socket.io":"^4.8.0","iconv-lite":"^0.6.3","html-to-text":"^9.0.5","module-alias":"^2.2.3","console-stamp":"^3.1.2","express-ipfilter":"^1.3.2","systeminformation":"^5.23.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.1.6","jsdom":"^25.0.1","sinon":"^19.0.2","cspell":"^8.14.4","prettier":"^3.3.3","stylelint":"^16.9.0","@eslint/js":"^9.11.1","playwright":"^1.47.2","lint-staged":"^15.2.10","eslint-plugin-jest":"^28.8.3","express-basic-auth":"^1.2.1","stylelint-prettier":"^5.0.2","eslint-plugin-jsdoc":"^50.3.0","@stylistic/eslint-plugin":"^2.8.0","stylelint-config-standard":"^36.0.1","eslint-plugin-package-json":"^0.15.3"},"optionalDependencies":{"electron":"^31.6.0"},"_npmOperationalInternal":{"tmp":"tmp/magicmirror_2.29.0_1729678734308_0.04650977756599728","host":"s3://npm-registry-packages"}},"2.30.0":{"name":"magicmirror","version":"2.30.0","keywords":["magic mirror","magicmirror","smart mirror","mirror UI","modular"],"author":{"name":"Michael Teeuw"},"license":"MIT","_id":"magicmirror@2.30.0","maintainers":[{"name":"michmich","email":"michael@xonaymedia.nl"},{"name":"rejas","email":"npm@veeck.de"},{"name":"karsten13","email":"hassel@gmx.de"}],"contributors":[{"name":"https://github.com/MagicMirrorOrg/MagicMirror/graphs/contributors"}],"homepage":"https://magicmirror.builders","bugs":{"url":"https://github.com/MagicMirrorOrg/MagicMirror/issues"},"dist":{"shasum":"f4c153bd130792debf6c89c3cacc75371fae5bbc","tarball":"https://registry.npmjs.org/magicmirror/-/magicmirror-2.30.0.tgz","fileCount":364,"integrity":"sha512-KBpeqDGushFPG44O2lYDl0b5+YpcNrTXzjcGMGw540koitMJ734uzSC4YEfDVHHBETyF//oglwgTYSArW2gQqg==","signatures":[{"sig":"MEUCIQCIgVDdd+mFNNe3eZAnCvKOWIy2tmxWgDEpNkRwVWf4sQIgXEOwedSSTztDL8o806sxlOcxDGro8ftNsE30wRrkKMg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1110684},"main":"js/electron.js","engines":{"node":">=20.18.1 <21 || >=22"},"gitHead":"c24de64d7717d5b66111f71a9285e80f3e11ab67","scripts":{"test":"NODE_ENV=test jest -i --forceExit","start":"npm run start:x11","server":"node ./serveronly","lint:js":"eslint . --fix","prepare":"[ -f node_modules/.bin/husky ] && husky || echo no husky installed.","test:js":"eslint .","lint:css":"stylelint 'css/main.css' 'fonts/*.css' 'modules/default/**/*.css' 'vendor/*.css' --config .stylelintrc.json --fix","test:css":"stylelint 'css/main.css' 'fonts/*.css' 'modules/default/**/*.css' 'vendor/*.css' --config .stylelintrc.json","test:e2e":"NODE_ENV=test jest --selectProjects e2e -i --forceExit","start:dev":"npm run start -- dev","start:x11":"DISPLAY=\"${DISPLAY:=:0}\" ./node_modules/.bin/electron js/electron.js","test:unit":"NODE_ENV=test jest --selectProjects unit","install-mm":"npm install --no-audit --no-fund --no-update-notifier --only=prod --omit=dev","postinstall":"npm run install-vendor && npm run install-fonts && echo \"MagicMirror² installation finished successfully! \n\"","config:check":"node js/check_config.js","install-fonts":"echo \"Installing fonts ...\n\" && cd fonts && npm install --loglevel=error --no-audit --no-fund --no-update-notifier","lint:markdown":"markdownlint-cli2 . --fix","lint:prettier":"prettier . --write","start:wayland":"WAYLAND_DISPLAY=\"${WAYLAND_DISPLAY:=wayland-1}\" ./node_modules/.bin/electron js/electron.js --enable-features=UseOzonePlatform --ozone-platform=wayland","start:windows":"electron js\\electron.js","start:x11:dev":"npm run start -- dev","test:calendar":"node ./modules/default/calendar/debug.js","test:coverage":"NODE_ENV=test jest --coverage -i --verbose false --forceExit","test:electron":"NODE_ENV=test jest --selectProjects electron -i --forceExit","test:markdown":"markdownlint-cli2 .","test:prettier":"prettier . --check","test:spelling":"cspell . --gitignore","install-mm:dev":"npm install --no-audit --no-fund --no-update-notifier","install-vendor":"echo \"Installing vendor files ...\n\" && cd vendor && npm install --loglevel=error --no-audit --no-fund --no-update-notifier","start:wayland:dev":"npm run start:wayland -- dev","start:windows:dev":"npm run start:windows -- dev"},"_npmUser":{"name":"rejas","email":"npm@veeck.de"},"repository":{"url":"git+https://github.com/MagicMirrorOrg/MagicMirror.git","type":"git"},"_npmVersion":"10.9.0","description":"The open source modular smart mirror platform.","directories":{},"lint-staged":{"*":"prettier --write","*.js":"eslint --fix","*.css":"stylelint --fix"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","pm2":"^5.4.3","ansis":"^3.5.2","envsub":"^4.1.0","eslint":"^9.17.0","feedme":"^2.0.2","helmet":"^8.0.0","moment":"^2.30.1","undici":"^7.2.0","express":"^4.21.2","suncalc":"^1.9.0","node-ical":"^0.20.1","socket.io":"^4.8.1","iconv-lite":"^0.6.3","html-to-text":"^9.0.5","module-alias":"^2.2.3","console-stamp":"^3.1.2","express-ipfilter":"^1.3.2","systeminformation":"^5.24.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.1.7","jsdom":"^25.0.1","sinon":"^19.0.2","cspell":"^8.17.1","prettier":"^3.4.2","stylelint":"^16.12.0","playwright":"^1.49.1","lint-staged":"^15.3.0","markdownlint-cli2":"^0.17.1","eslint-plugin-jest":"^28.10.0","express-basic-auth":"^1.2.1","stylelint-prettier":"^5.0.2","eslint-plugin-jsdoc":"^50.6.1","eslint-plugin-import":"^2.31.0","@stylistic/eslint-plugin":"^2.12.1","stylelint-config-standard":"^36.0.1","eslint-plugin-package-json":"^0.19.0"},"optionalDependencies":{"electron":"^32.2.7"},"_npmOperationalInternal":{"tmp":"tmp/magicmirror_2.30.0_1735749938577_0.23224793185140147","host":"s3://npm-registry-packages-npm-production"}},"2.31.0":{"name":"magicmirror","version":"2.31.0","keywords":["magic mirror","magicmirror","smart mirror","mirror UI","modular"],"author":{"name":"Michael Teeuw"},"license":"MIT","_id":"magicmirror@2.31.0","maintainers":[{"name":"michmich","email":"michael@xonaymedia.nl"},{"name":"rejas","email":"npm@veeck.de"},{"name":"karsten13","email":"hassel@gmx.de"}],"contributors":[{"name":"https://github.com/MagicMirrorOrg/MagicMirror/graphs/contributors"}],"homepage":"https://magicmirror.builders","bugs":{"url":"https://github.com/MagicMirrorOrg/MagicMirror/issues"},"dist":{"shasum":"206b8d8057517a3a1535f4d32364db7e80b1c969","tarball":"https://registry.npmjs.org/magicmirror/-/magicmirror-2.31.0.tgz","fileCount":378,"integrity":"sha512-2tI0jNRrGHgo/z7SOme6Hw//iqF8JMl86TRf2KTLuwt06QvbpxFBuyWDc9xKRcvZpOPonE/40KXBYDtaRhDlrQ==","signatures":[{"sig":"MEUCIQCGJ7QS9GQio5RUG5titQqBtIkzXGr/dNYK+wpsZPDNSQIgJuKZGvC74EFwODItg3uIBPKh2Ml6VDHiC3LkzxhAQNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1144370},"main":"js/electron.js","engines":{"node":">=22.14.0"},"gitHead":"39a614e0de8cea0295087529ec59bae42aee1328","scripts":{"test":"NODE_ENV=test jest -i --forceExit","start":"npm run start:x11","server":"node ./serveronly","lint:js":"eslint --fix","prepare":"[ -f node_modules/.bin/husky ] && husky || echo no husky installed.","test:js":"eslint","lint:css":"stylelint 'css/main.css' 'fonts/*.css' 'modules/default/**/*.css' 'vendor/*.css' --config .stylelintrc.json --fix","test:css":"stylelint 'css/main.css' 'fonts/*.css' 'modules/default/**/*.css' 'vendor/*.css' --config .stylelintrc.json","test:e2e":"NODE_ENV=test jest --selectProjects e2e -i --forceExit","start:dev":"npm run start -- dev","start:x11":"DISPLAY=\"${DISPLAY:=:0}\" ./node_modules/.bin/electron js/electron.js","test:unit":"NODE_ENV=test jest --selectProjects unit","install-mm":"npm install --no-audit --no-fund --no-update-notifier --only=prod --omit=dev","postinstall":"npm run install-vendor && npm run install-fonts && echo \"MagicMirror² installation finished successfully! \n\"","config:check":"node js/check_config.js","install-fonts":"echo \"Installing fonts ...\n\" && cd fonts && npm install --loglevel=error --no-audit --no-fund --no-update-notifier","lint:markdown":"markdownlint-cli2 . --fix","lint:prettier":"prettier . --write","start:wayland":"WAYLAND_DISPLAY=\"${WAYLAND_DISPLAY:=wayland-1}\" ./node_modules/.bin/electron js/electron.js --enable-features=UseOzonePlatform --ozone-platform=wayland","start:windows":"electron js\\electron.js","start:x11:dev":"npm run start:x11 -- dev","test:calendar":"node ./modules/default/calendar/debug.js","test:coverage":"NODE_ENV=test jest --coverage -i --verbose false --forceExit","test:electron":"NODE_ENV=test jest --selectProjects electron -i --forceExit","test:markdown":"markdownlint-cli2 .","test:prettier":"prettier . --check","test:spelling":"cspell . --gitignore","install-mm:dev":"npm install --no-audit --no-fund --no-update-notifier","install-vendor":"echo \"Installing vendor files ...\n\" && cd vendor && npm install --loglevel=error --no-audit --no-fund --no-update-notifier","start:wayland:dev":"npm run start:wayland -- dev","start:windows:dev":"npm run start:windows -- dev"},"_npmUser":{"name":"rejas","email":"npm@veeck.de"},"repository":{"url":"git+https://github.com/MagicMirrorOrg/MagicMirror.git","type":"git"},"_npmVersion":"10.9.2","description":"The open source modular smart mirror platform.","directories":{},"lint-staged":{"*":"prettier --write","*.js":"eslint --fix","*.css":"stylelint --fix"},"_nodeVersion":"22.14.0","dependencies":{"ajv":"^8.17.1","pm2":"^5.4.3","ansis":"^3.17.0","envsub":"^4.1.0","eslint":"^9.23.0","feedme":"^2.0.2","helmet":"^8.1.0","moment":"^2.30.1","undici":"^7.6.0","express":"^4.21.2","suncalc":"^1.9.0","node-ical":"^0.20.1","socket.io":"^4.8.1","iconv-lite":"^0.6.3","html-to-text":"^9.0.5","module-alias":"^2.2.3","console-stamp":"^3.1.2","express-ipfilter":"^1.3.2","systeminformation":"^5.25.11"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.1.7","jsdom":"^26.0.0","sinon":"^20.0.0","cspell":"^8.18.1","prettier":"^3.5.3","stylelint":"^16.17.0","playwright":"^1.51.1","lint-staged":"^15.5.0","markdownlint-cli2":"^0.17.2","eslint-plugin-jest":"^28.11.0","express-basic-auth":"^1.2.1","stylelint-prettier":"^5.0.3","eslint-plugin-jsdoc":"^50.6.9","eslint-plugin-import":"^2.31.0","@stylistic/eslint-plugin":"^4.2.0","stylelint-config-standard":"^37.0.0","eslint-plugin-package-json":"^0.29.0"},"optionalDependencies":{"electron":"^35.1.2"},"_npmOperationalInternal":{"tmp":"tmp/magicmirror_2.31.0_1743538031645_0.8613199846271344","host":"s3://npm-registry-packages-npm-production"}},"2.32.0":{"name":"magicmirror","version":"2.32.0","keywords":["magic mirror","magicmirror","smart mirror","mirror UI","modular"],"author":{"name":"Michael Teeuw"},"license":"MIT","_id":"magicmirror@2.32.0","maintainers":[{"name":"michmich","email":"michael@xonaymedia.nl"},{"name":"rejas","email":"npm@veeck.de"},{"name":"karsten13","email":"hassel@gmx.de"}],"contributors":[{"name":"https://github.com/MagicMirrorOrg/MagicMirror/graphs/contributors"}],"homepage":"https://magicmirror.builders","bugs":{"url":"https://github.com/MagicMirrorOrg/MagicMirror/issues"},"dist":{"shasum":"5feb6fdf84759ec344ce18e4bd7389286fda05e5","tarball":"https://registry.npmjs.org/magicmirror/-/magicmirror-2.32.0.tgz","fileCount":478,"integrity":"sha512-lvxlOeSn1z3yrCSgU4+csOtk5iAeqJadS2OeyoQ/H5xs0gxpoMN00k0GffQ3UMZkKePiMPoW9zZMz442W3XM8w==","signatures":[{"sig":"MEYCIQCje9AUUJ0zT/MOpFsWpBGkJG3tOucmM1IHvl4zgnBNJgIhANZisxi1B5v8xGXvKAIX21P4aYy9vcfPHml3zeDZgo5k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1698905},"main":"js/electron.js","type":"commonjs","engines":{"node":">=22.14.0"},"gitHead":"62b0f7f26ec9531aafa91c2020c452ae2ae9d307","scripts":{"test":"NODE_ENV=test jest -i --forceExit","start":"node --run start:x11","server":"node ./serveronly","lint:js":"eslint --fix","prepare":"[ -f node_modules/.bin/husky ] && husky || echo no husky installed.","test:js":"eslint","lint:css":"stylelint 'css/main.css' 'css/roboto.css' 'css/font-awesome.css' 'modules/default/**/*.css' --fix","test:css":"stylelint 'css/main.css' 'css/roboto.css' 'css/font-awesome.css' 'modules/default/**/*.css'","test:e2e":"NODE_ENV=test jest --selectProjects e2e -i --forceExit","start:dev":"node --run start:x11 -- dev","start:x11":"DISPLAY=\"${DISPLAY:=:0}\" ./node_modules/.bin/electron js/electron.js","test:unit":"NODE_ENV=test jest --selectProjects unit","install-mm":"npm install --no-audit --no-fund --no-update-notifier --only=prod --omit=dev","postinstall":"git clean -df fonts vendor","config:check":"node js/check_config.js","lint:markdown":"markdownlint-cli2 . --fix","lint:prettier":"prettier . --write","start:wayland":"WAYLAND_DISPLAY=\"${WAYLAND_DISPLAY:=wayland-1}\" ./node_modules/.bin/electron js/electron.js --enable-features=UseOzonePlatform --ozone-platform=wayland","start:windows":"electron js\\electron.js","start:x11:dev":"node --run start:x11 -- dev","test:calendar":"node ./modules/default/calendar/debug.js","test:coverage":"NODE_ENV=test jest --coverage -i --verbose false --forceExit","test:electron":"NODE_ENV=test jest --selectProjects electron -i --forceExit","test:markdown":"markdownlint-cli2 .","test:prettier":"prettier . --check","test:spelling":"cspell . --gitignore","install-mm:dev":"npm install --no-audit --no-fund --no-update-notifier","start:wayland:dev":"node --run start:wayland -- dev","start:windows:dev":"node --run start:windows -- dev"},"_npmUser":{"name":"karsten13","actor":{"name":"karsten13","type":"user","email":"hassel@gmx.de"},"email":"hassel@gmx.de"},"repository":{"url":"git+https://github.com/MagicMirrorOrg/MagicMirror.git","type":"git"},"_npmVersion":"10.9.2","description":"The open source modular smart mirror platform.","directories":{},"lint-staged":{"*":"prettier --write","*.js":"eslint --fix","*.css":"stylelint --fix"},"_nodeVersion":"22.17.0","dependencies":{"ajv":"^8.17.1","croner":"^9.1.0","envsub":"^4.1.0","eslint":"^9.30.0","feedme":"^2.0.2","helmet":"^8.1.0","moment":"^2.30.1","undici":"^7.11.0","express":"^5.1.0","suncalc":"^1.9.0","nunjucks":"^3.2.4","node-ical":"^0.20.1","socket.io":"^4.8.1","iconv-lite":"^0.6.3","animate.css":"^4.1.1","html-to-text":"^9.0.5","module-alias":"^2.2.3","weathericons":"^2.1.0","console-stamp":"^3.1.2","moment-timezone":"^0.6.0","express-ipfilter":"^1.3.2","systeminformation":"^5.27.7","@fontsource/roboto":"^5.2.6","@fontsource/roboto-condensed":"^5.2.6","@fortawesome/fontawesome-free":"^6.7.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.3","husky":"^9.1.7","jsdom":"^26.1.0","sinon":"^21.0.0","cspell":"^9.1.2","prettier":"^3.6.2","stylelint":"^16.21.0","playwright":"^1.53.1","lint-staged":"^16.1.2","markdownlint-cli2":"^0.18.1","eslint-plugin-jest":"^29.0.1","express-basic-auth":"^1.2.1","stylelint-prettier":"^5.0.3","eslint-plugin-jsdoc":"^51.2.3","eslint-plugin-import-x":"^4.16.1","@stylistic/eslint-plugin":"^5.1.0","stylelint-config-standard":"^38.0.0","eslint-plugin-package-json":"^0.42.0"},"optionalDependencies":{"electron":"^36.6.0"},"_npmOperationalInternal":{"tmp":"tmp/magicmirror_2.32.0_1751323674330_0.6994904692106918","host":"s3://npm-registry-packages-npm-production"}},"2.33.0":{"name":"magicmirror","version":"2.33.0","keywords":["magic mirror","magicmirror","smart mirror","mirror UI","modular"],"author":{"name":"Michael Teeuw"},"license":"MIT","_id":"magicmirror@2.33.0","maintainers":[{"name":"michmich","email":"michael@xonaymedia.nl"},{"name":"rejas","email":"npm@veeck.de"},{"name":"karsten13","email":"hassel@gmx.de"}],"contributors":[{"name":"https://github.com/MagicMirrorOrg/MagicMirror/graphs/contributors"}],"homepage":"https://magicmirror.builders","bugs":{"url":"https://github.com/MagicMirrorOrg/MagicMirror/issues"},"dist":{"shasum":"d0195e1b0fbcc66534d296a226bb5a8b2e7b19fe","tarball":"https://registry.npmjs.org/magicmirror/-/magicmirror-2.33.0.tgz","fileCount":385,"integrity":"sha512-uzQmQlgCR2eNhGdipTfq4CZVTjjfLimBTNpdj8SLavn2cpns1qI/rZrKc2iYKRReWLH6WTCpKehy1fiBEGbMRQ==","signatures":[{"sig":"MEUCIQDKVzSJwkH5mDgDfcGTLQeb5bobHoA+NNhmFDv+s9VrygIgAWZTvlsuYfR7UTE1ZB01qMlUiAMb323g8Y5VonaBD6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1186528},"main":"js/electron.js","type":"commonjs","engines":{"node":">=22.18.0"},"gitHead":"b0c592401953662b74da6984fd5d87acd158376f","imports":{"#module_functions":{"default":"./js/module_functions.js"},"#server_functions":{"default":"./js/server_functions.js"}},"scripts":{"test":"NODE_ENV=test jest -i --forceExit","start":"node --run start:x11","server":"node ./serveronly","lint:js":"eslint --fix","prepare":"[ -f node_modules/.bin/husky ] && husky || echo no husky installed.","test:js":"eslint","lint:css":"stylelint 'css/main.css' 'css/roboto.css' 'css/font-awesome.css' 'modules/default/**/*.css' --fix","test:css":"stylelint 'css/main.css' 'css/roboto.css' 'css/font-awesome.css' 'modules/default/**/*.css'","test:e2e":"NODE_ENV=test jest --selectProjects e2e -i --forceExit","start:dev":"node --run start:x11 -- dev","start:x11":"DISPLAY=\"${DISPLAY:=:0}\" ./node_modules/.bin/electron js/electron.js","test:unit":"NODE_ENV=test jest --selectProjects unit","install-mm":"npm install --no-audit --no-fund --no-update-notifier --only=prod --omit=dev","postinstall":"git clean -df fonts vendor","config:check":"node js/check_config.js","lint:markdown":"markdownlint-cli2 . --fix","lint:prettier":"prettier . --write","start:wayland":"WAYLAND_DISPLAY=\"${WAYLAND_DISPLAY:=wayland-1}\" ./node_modules/.bin/electron js/electron.js --enable-features=UseOzonePlatform --ozone-platform=wayland","start:windows":"electron js\\electron.js","start:x11:dev":"node --run start:x11 -- dev","test:calendar":"node ./modules/default/calendar/debug.js","test:coverage":"NODE_ENV=test jest --coverage -i --verbose false --forceExit","test:electron":"NODE_ENV=test jest --selectProjects electron -i --forceExit","test:markdown":"markdownlint-cli2 .","test:prettier":"prettier . --check","test:spelling":"cspell . --gitignore","install-mm:dev":"npm install --no-audit --no-fund --no-update-notifier","start:wayland:dev":"node --run start:wayland -- dev","start:windows:dev":"node --run start:windows -- dev"},"_npmUser":{"name":"karsten13","email":"hassel@gmx.de"},"repository":{"url":"git+https://github.com/MagicMirrorOrg/MagicMirror.git","type":"git"},"_npmVersion":"11.6.0","description":"The open source modular smart mirror platform.","directories":{},"lint-staged":{"*":"prettier --ignore-unknown --write","*.js":"eslint --fix","*.css":"stylelint --fix"},"_nodeVersion":"24.9.0","dependencies":{"ajv":"^8.17.1","pm2":"^6.0.13","croner":"^9.1.0","envsub":"^4.1.0","eslint":"^9.36.0","feedme":"^2.0.2","helmet":"^8.1.0","moment":"^2.30.1","undici":"^7.16.0","express":"^5.1.0","suncalc":"^1.9.0","nunjucks":"^3.2.4","node-ical":"^0.21.0","socket.io":"^4.8.1","iconv-lite":"^0.7.0","animate.css":"^4.1.1","html-to-text":"^9.0.5","module-alias":"^2.2.3","weathericons":"^2.1.0","console-stamp":"^3.1.2","moment-timezone":"^0.6.0","express-ipfilter":"^1.3.2","systeminformation":"^5.27.10","@fontsource/roboto":"^5.2.8","@fontsource/roboto-condensed":"^5.2.8","@fortawesome/fontawesome-free":"^7.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^27.0.0","cspell":"^9.2.1","prettier":"^3.6.2","stylelint":"^16.24.0","playwright":"^1.55.0","lint-staged":"^16.2.0","markdownlint-cli2":"^0.18.1","eslint-plugin-jest":"^29.0.1","express-basic-auth":"^1.2.1","stylelint-prettier":"^5.0.3","eslint-plugin-jsdoc":"^60.1.1","eslint-plugin-import-x":"^4.16.1","@stylistic/eslint-plugin":"^5.4.0","stylelint-config-standard":"^39.0.0","eslint-plugin-package-json":"^0.56.3","prettier-plugin-jinja-template":"^2.1.0"},"optionalDependencies":{"electron":"^38.1.2"},"_npmOperationalInternal":{"tmp":"tmp/magicmirror_2.33.0_1759252685284_0.9378413381856701","host":"s3://npm-registry-packages-npm-production"}},"2.34.0":{"name":"magicmirror","version":"2.34.0","keywords":["magic mirror","magicmirror","smart mirror","mirror UI","modular"],"author":{"name":"Michael Teeuw"},"license":"MIT","_id":"magicmirror@2.34.0","maintainers":[{"name":"michmich","email":"michael@xonaymedia.nl"},{"name":"rejas","email":"npm@veeck.de"},{"name":"sdetweil","email":"sdetweil@gmail.com"},{"name":"karsten13","email":"hassel@gmx.de"},{"name":"kristjan.esperanto","email":"kristjan.schmidt@googlemail.com"}],"contributors":[{"url":"https://github.com/MagicMirrorOrg/MagicMirror/graphs/contributors","name":"MagicMirror contributors"}],"homepage":"https://magicmirror.builders","bugs":{"url":"https://github.com/MagicMirrorOrg/MagicMirror/issues"},"dist":{"shasum":"3749330ee8d5a75b8c895acc21370872768996a8","tarball":"https://registry.npmjs.org/magicmirror/-/magicmirror-2.34.0.tgz","fileCount":395,"integrity":"sha512-SQpr+RJKDKVIukOoK3POfKlmYNdfAZNQ8hXcLNAzRUXggiXcflpFsl3K6LP7LT9Q/6NNYCl3nf6jx0kfXszxlA==","signatures":[{"sig":"MEUCIFs0vMMhNjULtWtsQQmMUTvcbGpk7llb2NOAz0JLCskKAiEAg1B9g6yZOYZ43j8CfNREEsIKmOBlWgwmyp+iBuu6/xU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1223834},"main":"js/electron.js","type":"commonjs","engines":{"node":">=22.21.1 <23 || >=24"},"gitHead":"b742e839becf106c400c18d49480b61fcfc47a0d","imports":{"#module_functions":{"default":"./js/module_functions.js"},"#server_functions":{"default":"./js/server_functions.js"}},"scripts":{"test":"vitest run","start":"node --run start:x11","server":"node ./serveronly","lint:js":"eslint --fix","prepare":"[ -f node_modules/.bin/husky ] && husky || echo no husky installed.","test:js":"eslint","test:ui":"vitest --ui","lint:css":"stylelint 'css/main.css' 'css/roboto.css' 'css/font-awesome.css' 'modules/default/**/*.css' --fix","test:css":"stylelint 'css/main.css' 'css/roboto.css' 'css/font-awesome.css' 'modules/default/**/*.css'","test:e2e":"vitest run tests/e2e","start:dev":"node --run start:x11 -- dev","start:x11":"DISPLAY=\"${DISPLAY:=:0}\" ./node_modules/.bin/electron js/electron.js","test:unit":"vitest run tests/unit","install-mm":"npm install --no-audit --no-fund --no-update-notifier --only=prod --omit=dev","test:watch":"vitest","postinstall":"git clean -df fonts vendor","config:check":"node js/check_config.js","server:watch":"node ./serveronly/watcher.js","lint:markdown":"markdownlint-cli2 . --fix","lint:prettier":"prettier . --write","start:wayland":"WAYLAND_DISPLAY=\"${WAYLAND_DISPLAY:=wayland-1}\" ./node_modules/.bin/electron js/electron.js --ozone-platform=wayland","start:windows":"electron js\\electron.js","start:x11:dev":"node --run start:x11 -- dev","test:calendar":"node ./modules/default/calendar/debug.js","test:coverage":"vitest run --coverage","test:electron":"vitest run tests/electron","test:markdown":"markdownlint-cli2 .","test:prettier":"prettier . --check","test:spelling":"cspell . --gitignore","install-mm:dev":"npm install --no-audit --no-fund --no-update-notifier && npx playwright install chromium","start:wayland:dev":"node --run start:wayland -- dev","start:windows:dev":"node --run start:windows -- dev"},"_npmUser":{"name":"karsten13","email":"hassel@gmx.de"},"repository":{"url":"git+https://github.com/MagicMirrorOrg/MagicMirror.git","type":"git"},"_npmVersion":"11.6.2","description":"The open source modular smart mirror platform.","directories":{},"lint-staged":{"*":"prettier --ignore-unknown --write","*.js":"eslint --fix","*.css":"stylelint --fix"},"_nodeVersion":"24.12.0","dependencies":{"ajv":"^8.17.1","pm2":"^6.0.14","croner":"^9.1.0","envsub":"^4.1.0","eslint":"^9.39.2","feedme":"^2.0.2","helmet":"^8.1.0","moment":"^2.30.1","undici":"^7.16.0","express":"^5.2.1","suncalc":"^1.9.0","nunjucks":"^3.2.4","ipaddr.js":"^2.3.0","node-ical":"^0.22.1","socket.io":"^4.8.3","iconv-lite":"^0.7.1","animate.css":"^4.1.1","html-to-text":"^9.0.5","weathericons":"^2.1.0","console-stamp":"^3.1.2","moment-timezone":"^0.6.0","systeminformation":"^5.28.2","@fontsource/roboto":"^5.2.9","@fontsource/roboto-condensed":"^5.2.8","@fortawesome/fontawesome-free":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","jsdom":"^27.4.0","cspell":"^9.4.0","vitest":"^4.0.16","prettier":"^3.7.4","stylelint":"^16.26.1","@vitest/ui":"^4.0.16","playwright":"^1.57.0","lint-staged":"^16.2.7","markdownlint-cli2":"^0.20.0","express-basic-auth":"^1.2.1","stylelint-prettier":"^5.0.3","@vitest/coverage-v8":"^4.0.16","eslint-plugin-jsdoc":"^61.5.0","eslint-plugin-vitest":"^0.5.4","eslint-plugin-import-x":"^4.16.1","@stylistic/eslint-plugin":"^5.6.1","eslint-plugin-playwright":"^2.4.0","stylelint-config-standard":"^39.0.1","eslint-plugin-package-json":"^0.85.0","prettier-plugin-jinja-template":"^2.1.0"},"optionalDependencies":{"electron":"^39.2.7"},"_npmOperationalInternal":{"tmp":"tmp/magicmirror_2.34.0_1767292168202_0.48617109974903694","host":"s3://npm-registry-packages-npm-production"}},"2.35.0":{"name":"magicmirror","version":"2.35.0","keywords":["magic mirror","magicmirror","smart mirror","mirror UI","modular"],"author":{"name":"Michael Teeuw"},"license":"MIT","_id":"magicmirror@2.35.0","maintainers":[{"name":"michmich","email":"michael@xonaymedia.nl"},{"name":"rejas","email":"npm@veeck.de"},{"name":"sdetweil","email":"sdetweil@gmail.com"},{"name":"karsten13","email":"hassel@gmx.de"},{"name":"kristjan.esperanto","email":"kristjan.schmidt@googlemail.com"}],"contributors":[{"url":"https://github.com/MagicMirrorOrg/MagicMirror/graphs/contributors","name":"MagicMirror contributors"}],"homepage":"https://magicmirror.builders","bugs":{"url":"https://github.com/MagicMirrorOrg/MagicMirror/issues"},"dist":{"shasum":"8acdd9de7b2807f23ca85163492069e1063f4a40","tarball":"https://registry.npmjs.org/magicmirror/-/magicmirror-2.35.0.tgz","fileCount":172,"integrity":"sha512-ZyijnO6mtXkla7UTktI60XuzBTG+t6sdK+GcpUYAsVLtOZIeLcDu3S0wVrbPJktlDl1YKAz8Zglkdg0EoHIHLQ==","signatures":[{"sig":"MEYCIQCI/fJGH/6D1TeL68qVsgx3TcTtWjFcIbIp0HtP5mFtFQIhAMfFNDcwdJgUklu/0YwWsyCmo0zhkMdOEIfqG55kat9b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":762987},"main":"js/electron.js","type":"commonjs","engines":{"node":">=22.21.1 <23 || >=24"},"exports":"./js/electron.js","gitHead":"d05ea751d9b4dd106d02c7e1ed497bac3c77549e","imports":{"#http_fetcher":{"default":"./js/http_fetcher.js"},"#server_functions":{"default":"./js/server_functions.js"}},"scripts":{"test":"vitest run","start":"node --run start:wayland","server":"node ./serveronly","lint:js":"eslint --fix","prepare":"[ -f node_modules/.bin/husky ] && husky || echo no husky installed.","test:js":"eslint","test:ui":"vitest --ui","lint:css":"stylelint 'css/**/*.css' 'defaultmodules/**/*.css' --fix","test:css":"stylelint 'css/**/*.css' 'defaultmodules/**/*.css'","test:e2e":"vitest run tests/e2e","start:dev":"node --run start:wayland -- dev","start:x11":"DISPLAY=\"${DISPLAY:=:0}\" ./node_modules/.bin/electron js/electron.js","test:unit":"vitest run tests/unit","install-mm":"npm install --no-audit --no-fund --no-update-notifier --only=prod --omit=dev","test:watch":"vitest","postinstall":"git clean -df fonts vendor modules/default","config:check":"node js/check_config.js","server:watch":"node ./serveronly/watcher.js","lint:markdown":"markdownlint-cli2 . --fix","lint:prettier":"prettier . --write","start:wayland":"WAYLAND_DISPLAY=\"${WAYLAND_DISPLAY:=wayland-1}\" ./node_modules/.bin/electron js/electron.js --ozone-platform=wayland","start:windows":"electron js\\electron.js","start:x11:dev":"node --run start:x11 -- dev","test:calendar":"node ./defaultmodules/calendar/debug.js","test:coverage":"vitest run --coverage","test:electron":"vitest run tests/electron","test:markdown":"markdownlint-cli2 .","test:prettier":"prettier . --check","test:spelling":"cspell . --gitignore","install-mm:dev":"npm install --no-audit --no-fund --no-update-notifier && npx playwright install chromium","start:wayland:dev":"node --run start:wayland -- dev","start:windows:dev":"node --run start:windows -- dev"},"_npmUser":{"name":"karsten13","email":"hassel@gmx.de"},"repository":{"url":"git+https://github.com/MagicMirrorOrg/MagicMirror.git","type":"git"},"_npmVersion":"11.11.1","description":"The open source modular smart mirror platform.","directories":{},"lint-staged":{"*":"prettier --ignore-unknown --write","*.js":"eslint --fix","*.css":"stylelint --fix"},"sideEffects":true,"_nodeVersion":"25.8.2","dependencies":{"ajv":"^8.18.0","pm2":"^6.0.14","croner":"^10.0.1","eslint":"^10.1.0","feedme":"^2.0.2","helmet":"^8.1.0","moment":"^2.30.1","undici":"^7.24.6","express":"^5.2.1","globals":"^17.4.0","suncalc":"^1.9.0","nunjucks":"^3.2.4","ipaddr.js":"^2.3.0","node-ical":"^0.25.6","socket.io":"^4.8.3","iconv-lite":"^0.7.2","animate.css":"^4.1.1","html-to-text":"^9.0.5","weathericons":"^2.1.0","moment-timezone":"^0.6.1","systeminformation":"^5.31.5","@fontsource/roboto":"^5.2.10","@fontsource/roboto-condensed":"^5.2.8","@fortawesome/fontawesome-free":"^7.2.0"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.14","husky":"^9.1.7","jsdom":"^29.0.1","cspell":"^9.7.0","vitest":"^4.1.2","prettier":"^3.8.1","stylelint":"^17.6.0","@eslint/js":"^10.0.1","@vitest/ui":"^4.1.2","playwright":"^1.58.2","lint-staged":"^16.4.0","markdownlint-cli2":"^0.22.0","express-basic-auth":"^1.2.1","stylelint-prettier":"^5.0.3","@vitest/coverage-v8":"^4.1.2","eslint-plugin-jsdoc":"^62.8.1","@vitest/eslint-plugin":"^1.6.14","eslint-plugin-import-x":"^4.16.2","@stylistic/eslint-plugin":"^5.10.0","eslint-plugin-playwright":"^2.10.1","stylelint-config-standard":"^40.0.0","eslint-plugin-package-json":"^0.91.1","prettier-plugin-jinja-template":"^2.1.0"},"optionalDependencies":{"electron":"^41.1.0"},"_npmOperationalInternal":{"tmp":"tmp/magicmirror_2.35.0_1775041431966_0.3901847214578562","host":"s3://npm-registry-packages-npm-production"}},"2.36.0":{"name":"magicmirror","version":"2.36.0","keywords":["magic mirror","magicmirror","smart mirror","mirror UI","modular"],"author":{"name":"Michael Teeuw"},"license":"MIT","_id":"magicmirror@2.36.0","maintainers":[{"name":"michmich","email":"michael@xonaymedia.nl"},{"name":"rejas","email":"npm@veeck.de"},{"name":"sdetweil","email":"sdetweil@gmail.com"},{"name":"karsten13","email":"hassel@gmx.de"},{"name":"kristjan.esperanto","email":"kristjan.schmidt@googlemail.com"}],"contributors":[{"url":"https://github.com/MagicMirrorOrg/MagicMirror/graphs/contributors","name":"MagicMirror contributors"}],"homepage":"https://magicmirror.builders","bugs":{"url":"https://github.com/MagicMirrorOrg/MagicMirror/issues"},"dist":{"shasum":"56a5bc155cd6d60431fcd76247366d9a5f99dc76","tarball":"https://registry.npmjs.org/magicmirror/-/magicmirror-2.36.0.tgz","fileCount":172,"integrity":"sha512-rRddKmgsvFDkfQqlvHpvvByzb+i8Qfp86xaaNdS1yOT+6FL+MlVl14NmwI6mRjXTnW99nfKBBqN56jZtol4HGw==","signatures":[{"sig":"MEYCIQCmeCzJoD+k2CaeQ9x9swjdxcHXd/BScWA2d1QiyE3GcwIhAPpfrSau1frZewZKhim+BYXFmERbvGyv3ulPMPmAXZGn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":775991},"main":"js/electron.js","type":"commonjs","engines":{"node":">=22.21.1 <23 || >=24"},"exports":"./js/electron.js","gitHead":"fb41d24ef522e91e802e2a623ff6afbddeb3c9d8","imports":{"#http_fetcher":{"default":"./js/http_fetcher.js"},"#server_functions":{"default":"./js/server_functions.js"}},"scripts":{"test":"vitest run","start":"node --run start:wayland","server":"node ./serveronly","lint:js":"eslint --fix","prepare":"[ -f node_modules/.bin/husky ] && husky || echo no husky installed.","test:js":"eslint","test:ui":"vitest --ui","lint:css":"stylelint 'css/**/*.css' 'defaultmodules/**/*.css' --fix","test:css":"stylelint 'css/**/*.css' 'defaultmodules/**/*.css'","test:e2e":"vitest run tests/e2e","start:dev":"node --run start:wayland -- dev","start:x11":"DISPLAY=\"${DISPLAY:=:0}\" ./node_modules/.bin/electron js/electron.js","test:unit":"vitest run tests/unit","install-mm":"npm install --no-audit --no-fund --no-update-notifier --only=prod --omit=dev","test:watch":"vitest","postinstall":"git clean -df fonts vendor modules/default","config:check":"node js/check_config.js","server:watch":"node ./serveronly/watcher.js","lint:markdown":"markdownlint-cli2 . --fix","lint:prettier":"prettier . --write","start:wayland":"WAYLAND_DISPLAY=\"${WAYLAND_DISPLAY:=wayland-1}\" ./node_modules/.bin/electron js/electron.js --ozone-platform=wayland","start:windows":"electron js\\electron.js","start:x11:dev":"node --run start:x11 -- dev","test:calendar":"node ./defaultmodules/calendar/debug.js","test:coverage":"vitest run --coverage","test:electron":"vitest run tests/electron","test:markdown":"markdownlint-cli2 .","test:prettier":"prettier . --check","test:spelling":"cspell . --gitignore","install-mm:dev":"npm install --no-audit --no-fund --no-update-notifier && npx playwright install chromium","start:wayland:dev":"node --run start:wayland -- dev","start:windows:dev":"node --run start:windows -- dev"},"_npmUser":{"name":"karsten13","email":"hassel@gmx.de"},"repository":{"url":"git+https://github.com/MagicMirrorOrg/MagicMirror.git","type":"git"},"_npmVersion":"11.12.1","description":"The open source modular smart mirror platform.","directories":{},"lint-staged":{"*":"prettier --ignore-unknown --write","*.js":"eslint --fix","*.css":"stylelint --fix"},"sideEffects":true,"_nodeVersion":"25.9.0","dependencies":{"ajv":"^8.20.0","pm2":"^6.0.14","croner":"^10.0.1","eslint":"^10.2.1","feedme":"^2.0.2","helmet":"^8.1.0","moment":"^2.30.1","undici":"^8.1.0","express":"^5.2.1","globals":"^17.5.0","suncalc":"^1.9.0","nunjucks":"^3.2.4","ipaddr.js":"^2.3.0","node-ical":"^0.26.0","socket.io":"^4.8.3","iconv-lite":"^0.7.2","animate.css":"^4.1.1","html-to-text":"^9.0.5","weathericons":"^2.1.0","moment-timezone":"^0.6.2","systeminformation":"^5.31.5","@fontsource/roboto":"^5.2.10","@fontsource/roboto-condensed":"^5.2.8","@fortawesome/fontawesome-free":"^7.2.0"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.13.6","husky":"^9.1.7","jsdom":"^29.1.0","cspell":"^10.0.0","vitest":"^4.1.5","prettier":"^3.8.3","stylelint":"^17.9.1","@eslint/js":"^10.0.1","@vitest/ui":"^4.1.5","playwright":"^1.59.1","lint-staged":"^16.4.0","markdownlint-cli2":"^0.22.1","express-basic-auth":"^1.2.1","stylelint-prettier":"^5.0.3","@vitest/coverage-v8":"^4.1.5","eslint-plugin-jsdoc":"^62.9.0","@vitest/eslint-plugin":"^1.6.16","eslint-plugin-import-x":"^4.16.2","@stylistic/eslint-plugin":"^5.10.0","eslint-plugin-playwright":"^2.10.2","stylelint-config-standard":"^40.0.0","eslint-plugin-package-json":"^0.91.2","prettier-plugin-jinja-template":"^2.1.0"},"optionalDependencies":{"electron":"^41.3.0"},"_npmOperationalInternal":{"tmp":"tmp/magicmirror_2.36.0_1777583189344_0.9607907436281884","host":"s3://npm-registry-packages-npm-production"}},"2.37.0":{"name":"magicmirror","version":"2.37.0","description":"The open source modular smart mirror platform.","keywords":["magic mirror","magicmirror","smart mirror","mirror UI","modular"],"homepage":"https://magicmirror.builders","bugs":{"url":"https://github.com/MagicMirrorOrg/MagicMirror/issues"},"repository":{"type":"git","url":"git+https://github.com/MagicMirrorOrg/MagicMirror.git"},"license":"MIT","author":{"name":"Michael Teeuw"},"contributors":[{"name":"MagicMirror contributors","url":"https://github.com/MagicMirrorOrg/MagicMirror/graphs/contributors"}],"type":"commonjs","imports":{"#server_functions":{"default":"./js/server_functions.js"},"#http_fetcher":{"default":"./js/http_fetcher.js"}},"main":"js/electron.js","exports":"./js/electron.js","sideEffects":true,"scripts":{"config:check":"node js/check_config.js","install-mm":"npm install --no-audit --no-fund --no-update-notifier --only=prod --omit=dev","install-mm:dev":"npm install --no-audit --no-fund --no-update-notifier && npx playwright install chromium","lint:fix":"eslint --fix && prettier . --write","prepare":"[ -f node_modules/.bin/husky ] && husky || echo no husky installed.","server":"node ./serveronly","server:watch":"node ./serveronly/watcher.js","start":"node --run start:wayland","start:dev":"node --run start:wayland -- dev","start:wayland":"WAYLAND_DISPLAY=\"${WAYLAND_DISPLAY:=wayland-1}\" ./node_modules/.bin/electron js/electron.js --ozone-platform=wayland","start:wayland:dev":"node --run start:wayland -- dev","start:windows":"electron js\\electron.js","start:windows:dev":"node --run start:windows -- dev","start:x11":"DISPLAY=\"${DISPLAY:=:0}\" ./node_modules/.bin/electron js/electron.js","start:x11:dev":"node --run start:x11 -- dev","test":"vitest run","test:calendar":"node ./defaultmodules/calendar/debug.js","test:coverage":"vitest run --coverage","test:e2e":"vitest run tests/e2e","test:electron":"vitest run tests/electron","test:lint":"eslint && prettier . --check","test:spelling":"cspell . --gitignore","test:ui":"vitest --ui","test:unit":"vitest run tests/unit","test:watch":"vitest"},"lint-staged":{"*":["eslint --fix","prettier --write --ignore-unknown"]},"dependencies":{"@fontsource/roboto":"^5.2.10","@fontsource/roboto-condensed":"^5.2.8","@fortawesome/fontawesome-free":"^7.3.0","animate.css":"^4.1.1","croner":"^10.0.1","eslint":"^10.6.0","express":"^5.2.1","feedme":"^2.0.2","globals":"^17.7.0","helmet":"^8.2.0","html-to-text":"^10.0.0","iconv-lite":"^0.7.2","ics-filter":"^1.0.3","ipaddr.js":"^2.4.0","moment":"^2.30.1","moment-timezone":"^0.6.2","node-ical":"^0.26.1","nunjucks":"^3.2.4","socket.io":"^4.8.3","suncalc":"^2.0.0","systeminformation":"^5.31.11","undici":"^8.5.0","weathericons":"^2.1.0"},"devDependencies":{"@eslint/css":"^1.3.0","@eslint/js":"^10.0.1","@eslint/markdown":"^8.0.2","@stylistic/eslint-plugin":"^5.10.0","@vitest/coverage-v8":"^4.1.9","@vitest/eslint-plugin":"^1.6.20","@vitest/ui":"^4.1.9","cspell":"^10.0.1","eslint-plugin-import-x":"^4.17.1","eslint-plugin-jsdoc":"^63.0.10","eslint-plugin-package-json":"^1.5.0","eslint-plugin-playwright":"^2.10.4","express-basic-auth":"^1.2.1","husky":"^9.1.7","jsdom":"^29.1.1","lint-staged":"^17.0.8","msw":"^2.14.6","playwright":"^1.61.1","prettier":"^3.9.4","prettier-plugin-jinja-template":"^2.2.0","vitest":"^4.1.9"},"optionalDependencies":{"electron":"^42.5.2"},"engines":{"node":">=22.21.1 <23 || >=24"},"_id":"magicmirror@2.37.0","gitHead":"4b4a59534f7da01e4030e46029fe9dd649a7675e","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-CCI4xuMAoufHF9ltytjhdpboCEBwTa2B4aeN8d2CjJOY1jhPbhjAqzHm2I1okQe2v1q1L8gtGVEBVrXISv0KQg==","shasum":"8cc5b1f1717ed7d3e93d6184d2b87425a9f1b76c","tarball":"https://registry.npmjs.org/magicmirror/-/magicmirror-2.37.0.tgz","fileCount":175,"unpackedSize":794360,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCP0iBhBUofW5bYfqn4Pzj++rLqSjN03wsKWCGb7V3aMQIgc745DrJ8gfawG35m57olJlcWaApVFPTPAKcdTUWjNXs="}]},"_npmUser":{"name":"rejas","email":"npm@veeck.de"},"directories":{},"maintainers":[{"name":"michmich","email":"michael@xonaymedia.nl"},{"name":"rejas","email":"npm@veeck.de"},{"name":"sdetweil","email":"sdetweil@gmail.com"},{"name":"karsten13","email":"hassel@gmx.de"},{"name":"kristjan.esperanto","email":"kristjan.schmidt@googlemail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/magicmirror_2.37.0_1782936975210_0.6646828885690446"},"_hasShrinkwrap":false}},"time":{"created":"2016-03-30T10:44:27.303Z","modified":"2026-07-01T20:16:15.467Z","2.0.0":"2016-03-30T10:44:27.303Z","2.29.0":"2024-10-23T10:18:54.611Z","2.30.0":"2025-01-01T16:45:38.848Z","2.31.0":"2025-04-01T20:07:12.015Z","2.32.0":"2025-06-30T22:47:54.588Z","2.33.0":"2025-09-30T17:18:05.501Z","2.34.0":"2026-01-01T18:29:28.423Z","2.35.0":"2026-04-01T11:03:52.160Z","2.36.0":"2026-04-30T21:06:29.548Z","2.37.0":"2026-07-01T20:16:15.360Z"},"bugs":{"url":"https://github.com/MagicMirrorOrg/MagicMirror/issues"},"author":{"name":"Michael Teeuw"},"license":"MIT","homepage":"https://magicmirror.builders","keywords":["magic mirror","magicmirror","smart mirror","mirror UI","modular"],"repository":{"type":"git","url":"git+https://github.com/MagicMirrorOrg/MagicMirror.git"},"description":"The open source modular smart mirror platform.","contributors":[{"name":"MagicMirror contributors","url":"https://github.com/MagicMirrorOrg/MagicMirror/graphs/contributors"}],"maintainers":[{"name":"michmich","email":"michael@xonaymedia.nl"},{"name":"rejas","email":"npm@veeck.de"},{"name":"sdetweil","email":"sdetweil@gmail.com"},{"name":"karsten13","email":"hassel@gmx.de"},{"name":"kristjan.esperanto","email":"kristjan.schmidt@googlemail.com"}],"readme":"# ![MagicMirror²: The open source modular smart mirror platform.](.github/header.png)\n\n<p style=\"text-align: center\">\n  <a href=\"https://choosealicense.com/licenses/mit\">\n  <img src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License\">\n </a>\n <img src=\"https://img.shields.io/github/actions/workflow/status/magicmirrororg/magicmirror/automated-tests.yaml\" alt=\"GitHub Actions\">\n <img src=\"https://img.shields.io/github/check-runs/magicmirrororg/magicmirror/master\" alt=\"Build Status\">\n <a href=\"https://github.com/MagicMirrorOrg/MagicMirror\">\n  <img src=\"https://img.shields.io/github/stars/magicmirrororg/magicmirror?style=social\" alt=\"GitHub Stars\">\n </a>\n</p>\n\n**MagicMirror²** is an open source modular smart mirror platform. With a growing list of installable modules, the **MagicMirror²** allows you to convert your hallway or bathroom mirror into your personal assistant. **MagicMirror²** is built by the creator of [the original MagicMirror](https://michaelteeuw.nl/tagged/magicmirror) with the incredible help of a [growing community of contributors](https://github.com/MagicMirrorOrg/MagicMirror/graphs/contributors).\n\nMagicMirror² focuses on a modular plugin system and uses [Electron](https://www.electronjs.org/) as an application wrapper. So no more web server or browser installs necessary!\n\n![Animated demonstration of MagicMirror²](https://magicmirror.builders/img/demo.gif)\n\n## Documentation\n\nFor the full documentation including **[installation instructions](https://docs.magicmirror.builders/getting-started/installation.html)**, please visit our dedicated documentation website: [https://docs.magicmirror.builders](https://docs.magicmirror.builders).\n\n## Links\n\n- Website: [https://magicmirror.builders](https://magicmirror.builders)\n- Documentation: [https://docs.magicmirror.builders](https://docs.magicmirror.builders)\n- Forum: [https://forum.magicmirror.builders](https://forum.magicmirror.builders)\n  - Technical discussions: <https://forum.magicmirror.builders/category/11/core-system>\n- Discord: [https://discord.gg/J5BAtvx](https://discord.gg/J5BAtvx)\n- Blog: [https://michaelteeuw.nl/tagged/magicmirror](https://michaelteeuw.nl/tagged/magicmirror)\n- Donations: [https://magicmirror.builders/#donate](https://magicmirror.builders/#donate)\n\n## Contributing Guidelines\n\nContributions of all kinds are welcome, not only in the form of code but also with regards to\n\n- bug reports\n- documentation\n- translations\n\nFor the full contribution guidelines, check out: [https://docs.magicmirror.builders/about/contributing.html](https://docs.magicmirror.builders/about/contributing.html)\n\n## Enjoying MagicMirror? Consider a donation!\n\nMagicMirror² is Open Source and free. That doesn't mean we don't need any money.\n\nPlease consider a donation to help us cover the ongoing costs like webservers and email services.\nIf we receive enough donations we might even be able to free up some working hours and spend some extra time improving the MagicMirror² core.\n\nTo donate, please follow [this](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=G5D8E9MR5DTD2&source=url) link.\n\n<p style=\"text-align: center\">\n  <a href=\"https://forum.magicmirror.builders/topic/728/magicmirror-is-voted-number-1-in-the-magpi-top-50\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://magicmirror.builders/img/magpi-best-watermark.png\">\n      <img src=\"https://magicmirror.builders/img/magpi-best-watermark-custom.png\" width=\"150\" alt=\"MagPi Top 50\">\n    </picture>\n  </a>\n</p>\n","readmeFilename":"README.md"}